2016-04-08 15 views
0

誰かが、そのような場合にコピーコンストラクタとデストラクタをプログラムで使用する理由を教えてください。コンストラクタとコピーコンストラクタの順序

#include <iostream> 

#include <iomanip> 

using namespace std; 

class Object 
{ 
public: 
     Object(){} 
     Object(const Object &kk) {cout<<"kk"<<endl;} 
     bool operator==(Object c) 
     { 
       cout<<"o=="<<endl; return false; 
     } 
     ~Object() 
     { 
       cout<<"des"<<endl; 
     } 

}; 

int main() 
{ 
     Object o1,o2; 
     bool result; 
     result = (o1==o2); 
} 

結果は次のとおりです。答えを事前に

kk 
o== 
des 

感謝。

+0

あなたには3つの 'des'があります。これは出力全体ですか? –

+0

http://coliru.stacked-crooked.com/a/cda48c84215619dc –

+0

はい3 desがあります。ちょうどこれを書いた1.オービットの軽さのレースは既に私の質問に答えており、私はそれがなぜそうであるかを思い起こさせる。 – FilOle

答えて

2

あなたのoperator==は値で引数を取るためです。

値をとることはコピーを意味します。

コピーコンストラクタの場合のように、代わりにconst参照を使用するようにしてください。

+0

トリッキー。ありがとう。 – FilOle

関連する問題