在More Effective C++中,给出了如下代码
const String::CharProxy String::operator[] (int index) const
{
return CharProxy(const_cast<String&>(*this), index);
}
String::CharProxy::operator char() const
{
return theString.value->data[charIndex];
}
为什么我们不直接返回一个 char 而不是使用 const_cast 并稍后将 CharProxy 转换为 char?
最佳答案
如果我对你的情况没有错的话,还有 non const 版本既可以读/写 char,也可以像 Real Fresh 所说的那样获取 char 的指针/引用.
然后很自然地为 const 版本提供相同的功能,允许读取 char(当然不是写)并获取 char 的指针/引用(const)。
std::vector std::string 等有这种行为
关于c++ - 为什么要为 "copy on write"的 const 成员函数返回一个代理类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54416649/