1、应该完全用const取代#define的值替代。
2、C++中的const默认为内部连接。 ( C默认const是外部连接的。如果在C++中想达到外部连接,必须用extern。 )
就是说,const仅在const被定义过的文件里才是可见的,而在连接时不能被其它编译单元看见。
否则由于众多的const在多个cpp文件内分配存储,容易引起连接错误。
3、常量指针: const int * x;
指针常量: int * const x = &d;
常量对象: const int * const x = &d; or int const * const x = &d; ( 指针和对象都不能改变 )
4、在类里建立常量,不能用const,要用enum。
类里使用const的意思是“在这个对象寿命期内,这是一个常量”。然而,对这个常量来说,每个不同的对象可以含一个不同的值。(不是整个类范围)
enum的值是在编译时决定。
5、构造函数初始化表达式
它是构造函数特殊的初始化方法。初始化发生在构造函数任何代码执行前。这里是把所有的const初始化的地方。
例: class fred {
const size;
public:
fred();
}
fred::fred():size(100){}
6、const对象和const成员函数
const对象只能调用const成员函数。
const成员函数不修改成员数据。但是mutable成员可被const函数修改。
例 (const成员函数):
class X{
int i;
public:
int f()const;
};
int X::f()const{return i;}
7、volatile成员
语法和const一样。区别是告诉编译器不要擅自作出有关数据的任何假定。
转载于:https://www.cnblogs.com/nliao/archive/2012/11/29/2795313.html