为什么返回基本类型的const引用? (的std :: string ::运算符[])

时间:2016-05-30 21:58:15

标签: c++ oop

运营商std::string::operator[]的签名是:

char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;

为什么const版本返回const char&,而不只是char

1 个答案:

答案 0 :(得分:6)

因为const对象的整个目的是无法修改它。如果const类成员(在这种情况下)返回对字符串中字符的可变引用,则可以对其进行修改。

现在,就operator[]而言,它是因为您可以使用&运算符来获取指向它的指针。毕竟,这样的事情很常见:

 auto *foo=&bar[baz];

你不能用简单的右值返回类型来做。在这种情况下,至少你可以获得一个const指针。