2012-03-30 7 views
2

可能性の重複:
Copy Constructor is not invokedコピーコンストラクタが呼び出されていない

# include <iostream> 

using namespace std; 

class Abc 
{ 

     public: 
     int a; 
     Abc() 
     { 
      cout<<"def cstr\n"; 
      a=10; 
     } 


     Abc(const Abc &source) 
     { 
       a=source.a; 
       cout<<"copy constructor is called"<<endl; 
     } 


}; 

int main() 

{ 

    Abc kk = Abc(); 
    cout<<kk.a<<endl; 
     return 0; 
} 

上記のプログラムでは、私の出力があります。def CSTR

ここでは、コピーコンストラクタは、デフォルトのコンストラクタの後に呼び出されると予想されていましたが、これは起こっていません。

ここで何が起こっているのか教えてください。それはAbc()が一時オブジェクトを作成しているからですか?

私が間違っている場合は、私に修正してください。

ありがとうございます!あなたのコピーコンストラクタはokです

答えて

1

int main() { 

     Abc kk; 
     Abc kk1 = kk; 
     cout<<kk.a<<endl; 
      return 0; 
    } 

コピーコンストラクタは、他の既存のオブジェクトからの建設に一度と呼ばれていることをしてみてください。他の時間代入演算子が呼び出されます。 Abc kk = Abc();と言うと、あなたは単にデフォルトコンストラクタを呼び出しているだけです。

関連する問題