に引数としてクラス定数を渡すC++でが機能
void A(const class1 a);
と
void A(const class1 &a);
の違いは何ですか。
私はこれらの2つを区別できません。
に引数としてクラス定数を渡すC++でが機能
void A(const class1 a);
と
void A(const class1 &a);
の違いは何ですか。
私はこれらの2つを区別できません。
主な違いは、
A(const class1 a);
が
A(const class1 &a);
が作成されません
ながら(メモリおよび計算の観点の両方から)高価になることができA
内部
a
のローカルコピーを作成することですコピー。
したがって、通常はリファレンス(第2版)を渡すことが好ましい方法です。
最初の形式は必ずしも高価ではありません。すべてがclass1のサイズに依存します。これは参照よりも大きいので、あなたが言うことは真です。それ以外の場合はそうではありません。 – basslo
@basslo:それは正しいので、私は "高価なことができる"と書いたのです。しかし、私の経験では、クラスをコピーすることは、参照をコピーするよりも(メモリ消費と計算の観点から)安価であることはありません。これは、クラスのサイズに依存するだけでなく、主にコピーコンストラクタが行うものに依存します。 –
'sizeof(type)<= sizeof(void *)'ならば、参照や値渡しは問題になりません。 – NathanOliver
あなたは[良いC++の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を使用することができるように聞こえます – NathanOliver
提案のための助けを求めること –
よく一方の宣言には '&'が含まれ、他方の宣言には含まれません。それは、非常に大きな差を生みます。初心者の本があなたに伝えるものです。 –