c++ - 为什么要为 "copy on write"的 const 成员函数返回一个代理类?

标签 c++ string proxy-classes

在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/

相关文章:

c++ - 每次我要使用外部资源时,我都会得到 : collect2. exe: error ld returned 1 exit status

c++ - C++中字符串类的属性

c - 用指针反转c中的字符串

aop - 为什么基于纯继承的代理在 AoP 中不好

c++ - 从 LogonUser 函数获取最后一个错误并将其作为字符串返回?

c++ - 如何表示一组任意长度和类型组合的值?

c++ - 计算 RLE 压缩字符串所需的空间

c - 将字符串的第一个字节存储到另一个字符串中 : algorithm of LZW Compression

java - 返回 List<WebElements> 周围的代理

c# - 自动空值检查