8

オブジェクト (特に文字列) に関しては、関数呼び出しで元のオブジェクトのコピーを作成する必要がないため、参照による呼び出しは値による呼び出しよりも高速です。const を使用すると、参照が乱用されないようにすることもできます。

私の質問は、bool、int、または double などのプリミティブ型を使用する場合、const 参照渡しも高速かどうかです。

void doSomething(const string & strInput, unsigned int iMode);
void doSomething(const string & strInput, const unsigned int & iMode);

私の疑いでは、プリミティブ型のバイト単位のサイズがアドレス値のサイズを超えたらすぐに、参照渡しを使用する方が有利であるということです。私はこれらの関数のいくつかをかなり頻繁に呼び出すので、違いは小さくても利点を生かしたいと思います。

追加の質問: インライン化は私の質問への回答に影響を与えますか?

4

5 に答える 5

2

私は教えられました:

  • 引数変数が 、 、 などの基本的な組み込み型の 1 つである場合は、boolint渡ししますfloat。これらの型のオブジェクトは非常に小さいため、参照渡しによって効率が向上することはありません。また、変数のコピーを作成したい場合。

  • 変更する必要のない値を効率的に渡したい場合は、定数参照を渡します。

  • 引数変数の値を変更する場合にのみ参照を渡します。ただし、可能な限り引数変数を変更しないようにします。

于 2015-03-19T10:33:03.017 に答える
2

const は、コンパイル時に評価されるキーワードです。実行時のパフォーマンスには影響しません。これについては、こちらで詳しく読むことができます: https://isocpp.org/wiki/faq/const-correctness

于 2015-03-19T10:41:21.973 に答える