[英]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.