2.1.将某些东西声明为const可帮助编译器侦测出错误用法。比如说,一个重载[]函数返回值用上const限定符表明了其不可写值的特性。
1 const char& operator[](size_t rank) {
2 return text[rank];
3 }
2.2.将const作用于函数,如果你有修改数据的需求,可以使用mutable修饰符去掉bitwise constness约束,实际上用const修饰的函数是可以修改指针所指对象的。
2.3.当const和non-const有着实质的等价实现时,应该让non-const版本调用const版本。这里有一个同时兼顾何种情况下使用强制转换的例子。
1 const char& operator[](size_t rank) const{
2 return text[rank];
3 }
4 char & operator[](size_t rank) {
5 return const_cast<char &>(
6 static_cast<const char &>((*this)[rank])
7 );
8 }
使用const修饰函数用以区分重载函数。
原文:https://www.cnblogs.com/Royzzzzz/p/11898607.html