c++ - 数组运算符 [] 重载 const 和非常量版本

标签 c++ operator-overloading constants

我得到了一个实现模板数组类的任务。 其中一项要求是重载 [] 运算符。 我制作了这两个 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/

相关文章:

c++ - 在 C++ 中,原始类型静态初始化为常量值是线程安全的吗?

c++ - 如何使用 QT 命名空间中使用的重载 new 运算符

JavaScript:常量有什么用?

在 h 文件中声明的 c++ 静态数组给出警告 'defined but not used'

c++ - 如何将 HTML 字符串加载到嵌入式 WebBrowser 控件?

c++ - C++中 volatile 成员函数的目的是什么?

c++ - 使用当前用户凭据发送 WinHTTP 请求

c++ - 使用vector和pointer的双下标重载的区别

c++ - 成员函数 vs 运算符重载

javascript - 如何在 js 中创建一个非 block 范围的常量?