首页 > 解决方案 > 为什么即使对于“写入时复制”的 const 成员函数也返回代理类?

问题描述

在更有效的 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 呢?

标签: c++stringproxy-classes

解决方案


如果我在您的情况下没有错,那么还有非 const版本既可以读/写字符,也可以像 Real Fresh 所说的那样获取字符的指针/引用。

然后很自然地为const版本提供相同的版本,允许读取 char(当然不是写入)并且还获取 char 的指针/引用(const)。

您对std::vector std::string等有这种行为


推荐阅读