2012-01-10 21 views
2

fooクラスにオーバーロードされた代入演算子がないとします。 2つのfooオブジェクトに対して割り当てa = b;が与えられたらどうなりますか? オプションは次のとおりです。代入演算子が定義されていない場合、コピーコンストラクタが呼び出されますか?

  1. 自動代入演算子は使用されている
  2. コピーコンストラクタ
+0

はこの宿題ですか?そうであればタグ付けしてください。 –

+1

私は本当にあなたがこの質問にこのように名前をつけた理由は分かりません。 – Griwes

+0

タイトルがとてもうまく問題に合うとは思わない –

答えて

4

それが依存:

A a; 
//this is not an assignment, it is equivalent to A b(a); 
A b = a; //default copy constructor is called 

A c; 
//assignment 
c = a; //default assignment operator is called 
+1

IIRC '='文字を使用していても、最初の文字は代入ではなく、初期化され、 'A b(a);'と等価です。 – delnan

+0

@delnanええ、それで、私はコピーコンストラクタが呼ばれたと言いました。 –

+0

私は、割り当てとしてカウントするかどうかについて懸念しています(質問では、 'operator = 'が定義されていない代入時に何が起こるかを尋ねるだけです)。 – delnan

関連する問題