对于如下代码

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]);
    }
}
  1. 为了“避免代码重复”而使用这两个关键字,用const版本的函数实现非const版本
  2. 进行两次转型,1)为*this添加const,使得接下来调用operator[]的const版本。2)从函数返回值中移除const
  3. 将non-const对象转为const是安全的,所以使用static_cast