我在一门课上被要求重载 [] 并返回一个 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/