3
在C++中,必須operator []()
始終是成員函數嗎?如果是,爲什麼?在C++中,必須operator []()是成員函數嗎?
我讀的書 「經營者必須是成員函數」
「C++程序設計語言特別版」 頁面287
在C++中,必須operator []()
始終是成員函數嗎?如果是,爲什麼?在C++中,必須operator []()是成員函數嗎?
我讀的書 「經營者必須是成員函數」
「C++程序設計語言特別版」 頁面287
從C++草案:
13.5.5預訂[over.sub]
operator []應該是一個只有一個參數的非靜態成員函數。它實現了下標語法
後綴表達式[表達式]
因此,下標表達式x [Y]被解釋爲對x.operator T類型的類對象x如果T ::運算符存在,並且如果運算符被重載解析機制(13.3.3)選爲最佳匹配函數。
我找不到它在規範中明確的,但我假設的原因是因爲它的預期返回左值。
劃痕:它沒有意義。它返回下標類型的左值而不是對象類型。
是的,因爲它應該訪問班級的私人成員。 – Morwenn
@Morwenn:這應該是答案:) – slaphappy
你應該從堆棧溢出閱讀這篇文章,這是非常有趣的:http://stackoverflow.com/questions/4421706/operator-overloading/4421719#4421719 – ChristopheLec