2

私は C++ の初心者で、C++ クラスのコピー コンストラクターに & を配置する必要がある理由を知りたいです。アンパサンドを使用すると、コピーされるオブジェクトの参照が提供され、オブジェクトの新しいコピーが作成されないことを理解しています。 .しかし、なぜ私はオブジェクトをコピーすることを許可されていないのですか (メモリ使用量のポイントを無視します)?

4

2 に答える 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 に答える