繁体   English   中英

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

[英]Why return a const reference for a basic type? (std::string::operator[])

运算符std::string::operator[]的签名是:

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

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

因为const对象的整个目的是它不能被修改。 如果const类成员(在本例中)返回对字符串中字符的可变引用,则可以对其进行修改。

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

 auto *foo=&bar[baz];

您将无法使用普通的右值返回类型执行此操作。 在这种情况下,至少你可以得到一个const指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM