我得到了一个实现模板数组类的任务。 其中一项要求是重载 [] 运算符。 我制作了这两个 const 和非常量版本,看起来工作正常。
const T& operator[](const unsigned int index)const
和
T& operator[](const unsigned int index)
我的问题是编译器如何知道要运行哪一个 什么时候我会做类似的事情:
int i=arr[1]
在非常量数组上?
最佳答案
非常量函数将始终在非常量数组上调用,而常量函数将在常量数组上调用。
当您有两个同名方法时,编译器会根据参数类型和隐式对象参数 (arr) 的类型选择最合适的方法。
前几天我刚刚回答了一个类似的问题,你可能会发现它有帮助:https://stackoverflow.com/a/16922652/2387403
关于c++ - 数组运算符 [] 重载 const 和非常量版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16948567/