数组运算符[]重载const和非const版本

Rav*_*erg 0 c++ const operator-overloading

我得到了一个实现模板数组类的任务.其中一个要求是重载[]运算符.我制作了这两个const和非const版本,似乎工作正常.

const T& operator[](const unsigned int index)const
Run Code Online (Sandbox Code Playgroud)

T& operator[](const unsigned int index)
Run Code Online (Sandbox Code Playgroud)

我的问题是当我做类似的事情时,编译器将如何知道运行哪一个:

int i=arr[1]
Run Code Online (Sandbox Code Playgroud)

在非const数组?

Tay*_*ter 9

非const函数将始终在非const数组上调用,const函数在const数组上调用.

当您有两个具有相同名称的方法时,编译器会根据参数的类型以及隐式对象参数(arr)的类型选择最合适的方法.

前几天我刚刚回答了类似的问题,你可能会觉得它很有帮助:https://stackoverflow.com/a/16922652/2387403