看板 C_and_CPP 關於我們 聯絡資訊
目前正在看 C++ How to Program 5th Edition 第 11.8 章裡面有提到有關 overload [] 的程式 // overloaded subscrpit operator for non-const Arrays; // reference return creates a modifiable lvalue int &Array::operator[](int subscript) { ~~~ ~~~ } // overloaded subscript operator for const Arrays // const reference return creates an rvalue int Array::operator[](int subscript) const { ~~~ ~~~ } 因為對這寫法不太熟悉,所以又去翻了一下 C++ Primer 5th Edition 第 14.5 章裡面有寫到下面這一段話 通常如果一個 class 要定義 subscript 運算子,需要定義兩個版本: 一個是 non-const 成員函式,反回一個 reference 另一個是 const 成員函式,反回一個 const reference class Foo { public: int &operator[](const size_t); const int &operator[](const size_t) const; }; 目前不懂的是,為什麼一定要寫兩個 overload operator ? 書上本並沒有寫原因 還有,兩本書的寫法,哪種才是對的呢? 煩請大大們幫忙解決一下疑惑,感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.160.199
QQ29:因為你沒寫 non const的他會自己去呼叫const的 [] 07/16 11:30
QQ29:反過來 你沒寫const的 const的物建 並不會呼叫nonconst的 07/16 11:30
QQ29:造成error 07/16 11:30