5

まあ、タイトルはかなり簡単だと思います。私は、重いオブジェクトをコピーすることを避けるべきだと何度も読んだことがありますが、それはかなり合理的なようです(誰がメモリホッグになりたいですか?)。問題は、オブジェクトが重いと見なされるのはいつかということです。メンバーは何人ですか?

4

1 に答える 1

5

渡すオブジェクトがポインタのサイズよりも大きい場合(通常、32ビットで4バイト、64ビットで8バイト)、コピーを回避する方が効率的です。

参照/ポインターで渡す必要があるかどうかは、追加の作業量と、データで何をするかによって異なります。コピーを作成して関数で変更するためだけに参照で渡すと、目的が果たせなくなります。const by-referenceとして渡すだけで十分な場合は、おそらくそうすることをお勧めします。

ただし、ほとんどのコンパイラは、コードが最適化をオンにしてコンパイルされたときに、読み取り専用オブジェクトのコピーを最適化するのに十分なほど賢いことに注意してください。したがって、ボトルネックになり、定量的に証明できない限り、実際に心配する必要はありません。

于 2012-05-08T18:22:28.297 に答える