在重载中返回常量元素

Returning a const element in an overload

本文关键字:常量 元素 返回 重载      更新时间:2023-10-16

在一个类中,我被要求重载[]并返回常量和非常量字符:

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?
}

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

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

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


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