在重载中返回const元素

时间:2012-01-14 18:28:52

标签: 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?
}

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

1 个答案:

答案 0 :(得分:2)

  

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

返回类型中的const const char&确保通过返回的引用无法修改该字符。


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