博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

const

Posted on 2014-09-09 19:35  widy  阅读(197)  评论(0)    收藏  举报

看着别人的文章,觉得重点或者会忘记的就随手记一下。。。。。

 

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