看着别人的文章,觉得重点或者会忘记的就随手记一下。。。。。
1.常类型的变量或对象的值是不能被更新的。
2.const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
3. 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
4.C++中:
const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数;
const对象的成员是不能修改的,而通过指针维护的对象确实可以修改的;
const成员函数不可以修改对象的数据,不管对象是否具有const性质。编译时以是否修改成员数据为依据进行检查
常量对象调用 非 常量函数时将会产生语法错误。
C++也允许在数据成员的定义前面加上mutable,以允许该成员可以在常量函数中被修改
5.const只修饰左边的内容(以后老是记不住,这样好记多了。。。)
6.如果不希望函数的调用者改变参数的值。最可靠的方法应该是使用引用。
7.const与宏常量
const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。
8.const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类声明中初始 化const数据成员,因为类的对象未被创建时,编译器不知道const 数据成员的值是什么。
const数据成员的初始化只能在类的构造函数的初始化表中进行。
9.在C中,const是一个不能被改变的普通变量,既然是变量,就要占用存储空间。
10.static 和const
http://blog.csdn.net/u014775175/article/details/38613479
浙公网安备 33010602011771号