rambo

effective cpp:关于const

一、const指针的几个区别

(1)const int*  p 与int const *p  修饰值,不能改变指针所指的值;

  • const 修饰的是整个*p,所以*p是个常量,是不能被赋值的。
  • p前并没有用const修饰,所以p是指针变量,能被赋值重新指向另一个内存地址。

(2)int* const p 修饰指针,不能改变指针的地址;

  •  p因为有了const修饰,所以p值是不可修改的
  • 整个*p的前面没有const的修饰,也就是说,*p是变量,所以可以通过*p来修改它所指内存的值。

(3)const int *const p

  • p是常量,所以不能把test2的地址赋给p;同时*p也是常量,所以*p的内容不可更改。

二、条款2:尽可能使用const

1、C++中变量常量的声明和定义

1)变量的定义默认为extern,要想使常量(const变量)能够在其他文件中访问,必须在定义时显示指定它为extern。

2、iterator与const_iterator

调用方式:获取迭代器指针

3、常量成员函数