Effective c++ 条款3,尽可能使用const
const 可以告诉编译器和其他程序员某些值应该保持不变,就相当于做出一种承诺。
const 可以修饰指针:

1 const int *a=&c; 等价于int const* a, ,只有跨过*号才意义不同,
a的含义是:从右向左读,是一个指针,指向常量对象,a指针指向的地址可以变化,但是不可以通过a去修改指向的内存的内容
*a = 2; 不允许的,不可以改变a指针指向的内存中的数据(a指向的内容)
但可以将a指向新的地址, a=&tmp
a指针指向的是常量对象c,不可以通过指针a改变c值
2 int *const a = &c , 指针a是一个常量,不可以将a重新指向绑定新的地址,但是可以改变a指向的地址里的数据,
*a=2;可以,
a=&tmp, 不可以
3 const用作类的成员函数 ,可以告诉别人某些函数可以改变对象内容,某些函数不可以改变
4 两个成员函数如果常量性不同,是可以被重载的,、

5 可以进行类型转换 使得非const函数调用const函数

首先将*this用static_cast转换为const,调用const函数,然后const_cast去除const
可以通过const成员函数间接实现非const成员函数,但是不可以通过非const函数去实现const函数,因为如果在const函数内部调用非const函数就有可能去改变对象,这违背了const的意义,
浙公网安备 33010602011771号