c++ - 在重载中返回 const 元素

标签 c++ operator-overloading

我在一门课上被要求重载 [] 并返回一个 const 和一个非 const 字符:

char * data_;
char & operator [] (size_t index);
const char & operator [] (size_t index) const;

我对两者都有相同的实现,并且可以编译,但我很确定我在这里遗漏了一些东西:

const char & Array::operator [] (size_t index) const
{
    return data_[index]; // todo: needs to be const?
}

如何确保返回的字符不可修改?

最佳答案

How can I ensure the returned character is not modifiable?

返回类型 const char& 中的 const 确保字符不可通过返回的引用进行修改。


但是请注意,返回 char 可能更可取(即按值返回 char,而不是对 const char< 的引用)。当你有一个大对象(因为在许多情况下你可以避免复制大量字节)或在通用代码中(因为你不知道可能出现的所有类型的大小)时,返回一个 const 引用很有用,但是当返回已知较小的东西时(不会比 char 小),您可以按值返回它。

关于c++ - 在重载中返回 const 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864368/

相关文章:

android - Qt 造物主 : arm-linux-androideabi-g++: not found

c++ - 提供正确的 move 语义

c++ - 使用 tr1::function 时出现编译错误

c++ - UB 能否导致多个单线程应用程序运行产生不同的输出?

c++ - 未调用重载赋值运算符

C++ 创建新运算符并重载当前运算符

c++ - 使用 std::thread 在 C++ 中的单独线程中执行每个对象

c++ - 运算符重载、奇数段错误、类、C++

c++ - 重载运算符 << 输出 bool 值。为什么?

c++ - C++类中的运算符重载