对于如下代码
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



京公网安备 11010502036488号