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的意义,

 

posted @ 2021-03-09 16:34  yanxiao6  阅读(38)  评论(0)    收藏  举报