性能:重载[]和调用函数
Performance: Overloaded [] and a call to a function
对于调用重载的[]来获取成员数据和调用像getData(index)这样的函数的性能,我最初的想法是相同的。因为调用[]本质上是一个函数调用。假设它们获取相同的数据,如values[1], values. getdata(1)将返回相同的值。我错了吗?如果它们执行相同,那么在这种情况下使用[]是否有非性能优势?
它们在本质上是一样的。重载操作符只是函数调用的一种独特语法。唯一改变的是调用它的代码的外观。
你甚至可以强制操作符调用看起来像函数。
values[1]
也可以写成
values.operator[]( 1 )
// ^^^^^^^^^^ This is effectively the name of your function.
两者是一回事,正如您在问题中提到的那样。重载只是函数调用。没有性能提升。
然而,operator[]
在历史上意味着(或者期望有)在内存中有一个连续的内部数据表示形式,或者更一般地作为容器数据结构的索引。因此,它通常在诸如向量、数组、矩阵等类中实现。
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 当使用通配符和null指针调用函数时,对输出的说明
- 从R调用C++函数并对其进行集成时出错
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在qt中从另一个类调用函数
- 在 COUT 语句中使用 COUT 调用函数
- 如何从线程中的不同模块调用函数?
- C++从函数指针数组调用函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在 C/C++ 中从外部库调用函数
- 如何使用运算符在同一行中多次调用函数
- 是否可以创建一个从不同类调用函数的线程?
- 无法为类成员调用函数
- 如何从另一个标头 c++ 调用函数
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何只允许在调用函数 B 后调用函数 A?
- 我可以这样调用函数吗?
- 如何在 c++ 的类中递归调用函数方法?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?