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