Const的作用,Const与#define相比,有何优点?
Const的作用
使用const关键字来声明变量,表明,内存被初始化后,程序便不能再对它进行修改。
即限定一个变量不允许被改变。
Const与#define相比有什么优点
1.const可以定义明确数据类型,而宏定义没有数据类型。
编译器会对const进行数据类型的安全检查,而宏定义只是单纯的字符替换,有时候会出错。
2.const节省空间,避免了不必要的内存分配,提高了效率。
宏定义在预编译阶段就替换掉了,有多少地方需要使用就替换多少次,它定义的宏常量在内存中的存储也是若干个备份;而const定义的只读变量在程序运行过程中在内存中只有一份备份。
3.有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
4.对于浮点常量而言,使用const会比使用#define更小量的代码。
5.无法使用#define创建一个class的专属常量,而const可以做到。
class GamePlayer
{
private:
static const int Num = 7;
};
其实const最棒的用法是面对函数声明时的应用。在一个函数声明式内,const可以和函数返回值、各参数、函数自身产生关联。
令函数返回一个常量值,往往可以降低因客户错误而造成的意外。例如:
class Rational {...};
const Rational operator* (const Rational& LTree, const Rational& RTree);
如果用户这样使用:
Rational a,b,c;
(a*b) = c;
如果a,b为内置类型,这样的代码直截了当的不合法。而一个“良好的用户自定义类型”的特征是他们避免无端地与内置类型不兼容。