我與這些運營商(鑑於某些類型的T
)一個struct
:C++:在哪種情況下將使用哪個運算符[]?
T& operator[](size_t i) { return write(i); }
const T& operator[](size_t i) const { return get(i); }
當我通過[i]
訪問的這一個非const對象,將它總是使用非const operator[]
還是會自動看到哪一個是必要的(例如,如果const版本「足夠」)並採取那一個?那裏有什麼規則?大多數編譯器(我主要關心Clang,最近的GCC和最近的MSVC)在那裏的表現都一樣嗎?
背景:write(i)
可能比get(i)
昂貴得多。我甚至有一些代碼的行爲稍有不同,其中write(i)
可能會觸及一些文件,設置一些修改標誌或其他。
+1根據轉換解釋 – je4d 2012-03-09 23:09:11