21、尽可能使用const
1、const的作用
const关键字的作用就是表示某个对象不应该被修改。若某值应该保持不变,就应该明确指出来,告诉编译器和其他程序员这个值不应该被改变,而编译器也会严格遵守这个值不能被改变的规则。
const的使用范围很广。
1.可以修饰全局变量、局部变量、static变量、类内的static与非static变量,使之为常量。
2.可以修饰指针。在*前是表示指针指向的对象不能被改变,在*后是指指针本身不能被改变,也可以同时表示指针本身以及其指向的对象都是常量。
3.用于函数声明中。可以修饰函数的返回值、入参,若是类的成员函数还可用于修饰整个函数,const对象只能调用const成员函数。
2、为何尽可能使用const
1.const修饰变量与指针时,编译器可以保证该值不会被意外的改变。若没有const关键字,值有可能被改变,即使他不应该改变,但编译器与其他程序员可能不知道,给代码的维护工作带来额外的负担。
2.const用于函数声明时,修饰返回值防止其返回值用于左值。修饰入参时防止函数内部改变入参的值。而修饰整个函数时,有两种解释:bitwise constness(位常量论)认为只要函数不修改对象的所有非static数据成员,即是const函数(通常的解释,编译器通常支持)。conceptual constness(概念常量论)认为只要不被clients检测到,可以修改某些位。
3、mutable
mutable关键字用来修饰,解放const限制,使得其可以被改变,即使是在const函数中。若不支持mutable,则只能依靠const_cast<>()类型转换来实现。