const修饰指针或者指针变量的区别
char gVariable = 0xff;
修饰指向的变量(gVariable不可被修改, pNext可以改变指向)
const char* pNext = &gVariable;
修饰指针本身(gVariable可被修改,pNext不可修改 只能指向gVariable)
char* const pNext = &gVariable;
分辨的规则在于从const起往右读取 被修饰的是指针还是指针变量
const char* pNext = &gVariable; const右边的是 *pNext 指针变量 所以gVariable 不可被修改
char* const pNext = &gVariable; const右边的是 pNext 指针 所以pNext不可被改变
const修饰对象和成员函数
const修饰的成员函数 不能修改类的变量属性
一般用来控制get类的方法
class obj {
public:
void getid() const {
return id;
}
private:
int id;
};
const修饰的对象 只能调用它的const成员函数
const修饰引用
和指针不同 引用是不支持const修饰的 引用自声明起 就固定指向某一个对象 不能改变
cons int &a = 5;
这样的修饰 实际上是指定了a指向的这个对象不可修改
所以类似这样的操作 编译器会报错
int & const a = 5; //error 引用不允许const修饰