2013-06-20 42 views
3

在C++中,必須operator []()始終是成員函數嗎?如果是,爲什麼?在C++中,必須operator []()是成員函數嗎?

我讀的書 「經營者必須是成員函數」

「C++程序設計語言特別版」 頁面287

+1

是的,因爲它應該訪問班級的私人成員。 – Morwenn

+0

@Morwenn:這應該是答案:) – slaphappy

+0

你應該從堆棧溢出閱讀這篇文章,這是非常有趣的:http://stackoverflow.com/questions/4421706/operator-overloading/4421719#4421719 – ChristopheLec

回答

9

從C++草案:

13.5.5預訂[over.sub]

operator []應該是一個只有一個參數的非靜態成員函數。它實現了下標語法

後綴表達式[表達式]

因此,下標表達式x [Y]被解釋爲對x.operator T類型的類對象x如果T ::運算符存在,並且如果運算符被重載解析機制(13.3.3)選爲最佳匹配函數。


我找不到它在規範中明確的,但我假設的原因是因爲它的預期返回左值。

劃痕:它沒有意義。它返回下標類型的左值而不是對象類型。

相關問題