原则3:尽可能使用const

《Effective C++》里面第3条原则是尽量使用const。
其原因是防止无意中更改而本来不应该更改的变量。
本条款也提到const成员函数的重要性,原因之一就是只有const函数才能用来操纵const对象。
而所谓const对象就像下图所示的这样:



有的时候会遇到在const函数中更改非const成员变量的情况,这个时候就要用到mutable关键字了。如果一个成员变量被mutable修饰,那么它在const函数中仍然可以被修改,但是前提是该成员变量是非const成员。
还有一种情况就是为了防止代码重复,比如两个函数实现了同样的功能只是类型不同而已,这样就会导致两段几乎相同的代码段,这无疑会增加编译时间、维护和代码膨胀等风险。在本原则的有关叙述中,作者采用了强制类型转换来解决之,虽然作者本身在大多数情况下并不提倡做法。
为了给用户一个一目了然的接口,一看就知道那些成员函数可以操纵const对象而哪些不能,作者建议在类中明确将那些不改变对象的成员函数声明为const函数,虽然const成员函数可以使用非const成员变量,但是遵守这一原则会给客户带来极大的便利。
因为const成员函数不更改对象,这就防止了由于误操作而带来的问题,因为最好用非const成员函数去调用const的实现,说白了就是直接return这个const成员函数,只不过需要对作为这个return的表达式的const成员函数进行一下强制类型转换使其成为非const型的。所以,在这里不得不提一下纯粹的C++的强制类型转换。
关键在static_cast(value)是纯粹的C++强制类型转换的关键词和用法,它的使用频率是最高的。


原则3:尽可能使用const_第1张图片

const_cast(value)是用来消除const属性时用的。不过它不能用于基本类型。
reinterpret_cast(value)它用于无关类型之间的转换。
dynamic_cast(value)用于父子类指针之间的转换。
在C++语言中只有这4中强制类型转换。

你可能感兴趣的:(原则3:尽可能使用const)