2.条款三:为什么建议你尽量使用const?

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修饰函数用以区分重载函数。

posted @ 2019-11-20 16:26  Royzzzzz  阅读(336)  评论(0编辑  收藏  举报