[問題] overloading [] 疑問!!
目前正在看 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
推
07/16 11:30, , 1F
07/16 11:30, 1F
→
07/16 11:30, , 2F
07/16 11:30, 2F
→
07/16 11:30, , 3F
07/16 11:30, 3F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章