对于如下代码
class A{ public: const char& openrator[](size_t position) const{ //... return text[position]; } char& operator[](size_t position){ return const_cast<char&>(static_cast<const A&>(*this)[position]); } }
- 为了“避免代码重复”而使用这两个关键字,用const版本的函数实现非const版本
- 进行两次转型,1)为*this添加const,使得接下来调用operator[]的const版本。2)从函数返回值中移除const
- 将non-const对象转为const是安全的,所以使用static_cast