作者cassey (惡魔凱西)
看板C_and_CPP
標題[問題] overloading [] 疑問!!
時間Thu Jul 16 11:19:57 2009
目前正在看 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