簡體   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