我与这些运营商(鉴于某些类型的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