私は C++ の初心者で、C++ クラスのコピー コンストラクターに & を配置する必要がある理由を知りたいです。アンパサンドを使用すると、コピーされるオブジェクトの参照が提供され、オブジェクトの新しいコピーが作成されないことを理解しています。 .しかし、なぜ私はオブジェクトをコピーすることを許可されていないのですか (メモリ使用量のポイントを無視します)?
質問する
490 次
2 に答える
6
参照による呼び出しを指定しない場合は、値による呼び出しになります。コンパイラは、引数を渡すためにコピー コンストラクターへの呼び出しを生成します。コピー コンストラクターがそのパラメーターを値で受け取った場合、無限の再帰が発生します。
于 2013-09-05T18:24:10.283 に答える
0
このようにすると、ClassA a = b (すでに ClassA が構築されています)、および Copy Constructor の実装は、
ClassA::ClassA(ClassA a) { // コードをコピーする }
次に、この呼び出しでは、コピー コンストラクターがすべての ClassA a = b に対して無限に呼び出されます。
于 2013-09-05T18:25:00.427 に答える