最近在看面试方面的书,很多公司会考到const的用法,个人总结如下:
1.C++如果可以的话尽量用const声明常量以替代define,这个主要有两个原因:const声明编译器可以进行类型安全检查;有些编译器还可能可以对const常量进行调试。
2.用const修饰对象,我个人总结的区别方法是:将类型去掉,看const修饰的是什么(const后面紧接着的是什么),如果是类型名称就是常对象;如果是指针变量名就是常指针。
(1)int const a 或者 const int a;说明a是一个常对象;a的值是不可以被改变的
(2)const int *a;说明a是一个指向常对象的指针,可以指向常对象也可以指向非const对象,指向非const对象时不能通过该指针修改对象的值,但是可以通过对象本身修改自己的值
(3)int *const a;说明a是一个常指针,定义时a就应该被初始化并且不能改变
(4)const int *const a;说明a是一个指向常对象的常指针,对象的值和指针的指向都不能改变
3.const修饰函数返回值,例如:const int function();这表明函数的返回值是const类型,其接收者者也应该是const类型。
4.如果函数的输入参数不需要在操作过程中发生变化,用const修饰函数的输入参数,这样可以避免操作过程中修改输入参数的值。
5.const放在函数声明的后面,表明该函数不能改变其操作对象的成员值。
6.在类中可以声明const成员,但是const成员只是在某个对象的生存周期内是常量,并且const成员不能再定义的时候初始化,只能在构造函数的初始化列表中被初始化除非声明的是static const成员,static const成员必须在声明时初始化。
PS:第一次发帖,本人也比较菜,如果有说的不到或者错误之处请不吝赐教,互相学习共同进步。