我在一个类中被问到我正在重载[]并返回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?
}
如何确保返回的字符不可修改?
答案 0 :(得分:2)
如何确保返回的字符不可修改?
返回类型中的const
const char&
确保通过返回的引用无法修改该字符。
但请注意,最好返回char
(即char
按值,而不是const char
的引用。当你有一个大对象(因为你可以避免在很多情况下复制很多字节)或通用代码(因为你不知道可能出现的所有类型的大小)时,返回一个const引用很有用,但是当返回已知为小的东西时(事情不会小于char
),你可以按值返回它。