0

オーバーロードされた [] を呼び出してメンバー データを取得するパフォーマンスと、getData(index) のような関数を呼び出すパフォーマンスについての最初の考えは同じでした。[] の呼び出しは本質的に関数呼び出しであるため。values[1] のような同じデータを取得すると仮定し、values.getData(1) は同じ値を返します。私が間違っている?それらが同じように機能する場合、この場合に [] を使用することにはパフォーマンス以外の利点がありますか?

4

2 に答える 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 に答える