2011-07-08 12 views
-3

から戻るには、我々は単に代わりに、オブジェクトの宣言にコピーコンストラクタを使用してのにとコピーオブジェクトの宣言でコンストラクタと機能

someclass X = Y; 
X=somefunction(); 

に機能すなわちから戻る「=」演算子をオーバーロードすることはできません私は、「=」オーバーロードすることができますオペレータはsomeclassでコピーコンストラクタを提供しません。

2つの別々のオブジェクトのポインタ変数が同じメモリ位置を指すのを避けるために、コピーコンストラクタとオーバーロード "="演算子の両方を必要とするケースはありますか?

+1

あなたは特定の言語について話していますか? –

+0

あなたの質問は不明です。あなたのサンプルコードはすでにコピーコンストラクタ( 'Y'は' someclass'型であると仮定します)と 'operator ='の両方を使用しています。 –

+0

私はこの文を理解できません: "コピーコンストラクタとオーバーロードの両方を必要とするケースはありますか?" –

答えて

1

いいえ、これらは異なる概念であり、パフォーマンス上の理由から両方とも存在します。あなたは(既存のオブジェクトから)新しいオブジェクトを作成するときに

  • コピーコンストラクタが使用されています。
  • オブジェクトがすでに存在する場合に割り当てが使用されますが、に新しい値を割り当てたいとします。

あなたがそれらの1つを提供する場合は、もう1つも提供してください。