c++ - 为什么即使对于“写入时复制”的 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 呢?
解决方案
如果我在您的情况下没有错,那么还有非 const版本既可以读/写字符,也可以像 Real Fresh 所说的那样获取字符的指针/引用。
然后很自然地为const版本提供相同的版本,允许读取 char(当然不是写入)并且还获取 char 的指针/引用(const)。
您对std::vector std::string等有这种行为
推荐阅读
- c++ - 每个类的函数在该类的对象中是否有函数指针?
- vba - 获取符号包含名称
- python - 在熊猫上使用 for 循环绘图
- microsoft-graph-api - 从外部系统调用微软团队的用户
- nsubstitute - Nsubstitute 是否可以检查 void 方法的参数值
- java - 如何防止 AWS Lambda 从 SQS 队列中删除消息
- python - 如何运行具有实时输出的python子进程?
- node.js - ReactJS:启动服务器时出错
- flutter - 有没有可能让ussd响应的方法?
- php - PHPUnit CakePHP 4.X - 模拟身份对象,但如何?