我最初对调用重载 [] 以获取成员数据和调用 getData(index) 之类的函数的性能的想法是相同的。由于调用 [] 本质上是一个函数调用。假设它们获取相同的数据,如 values[1] 和 values.getData(1) 将返回相同的值。我错了吗?如果它们执行相同,在这种情况下使用 [] 是否有非性能优势?
问问题
76 次
2 回答
3
它们是相同的,在引擎盖下。重载运算符只是函数调用的独特语法。唯一改变的是调用它的代码的外观。
您甚至可以强制操作员调用看起来像函数。
values[1]
也可以写成
values.operator[]( 1 )
// ^^^^^^^^^^ This is effectively the name of your function.
于 2013-04-02T00:43:34.803 回答
1
正如您在问题中提到的那样,两者都是同一件事。重载只是函数调用。没有性能增益。
然而,operator[]
从历史上看,这意味着(或预计会有)内存中存在连续的内部数据表示形式,或者更普遍地用作容器类数据结构的索引。因此,它通常在向量、数组、矩阵等类中实现。
于 2013-04-02T00:43:01.173 回答