复制构造不会被调用

问题描述:

可能重复:
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; 
} 

在上面的程序我的输出是:

高清CSTR

在这里,我预计复制构造函数会在未发生的默认构造函数之后调用。

请告诉我这是怎么回事。是否因为Abc()正在创建一个临时对象?

如果我错了,请纠正我。

谢谢!!!

你的拷贝构造函数是好的,尝试

int main() { 

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

拷贝构造函数被调用一次从另一个现有对象的构造。其他时间调用操作符被调用。通过说Abc kk = Abc();你只是调用默认的构造函数。