复制构造函数未被调用

时间:2012-03-30 14:37:21

标签: c++

  

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

10

这里我希望在没有发生的默认构造函数之后调用复制构造函数。

请告诉我这里发生了什么。是因为Abc()正在创建一个临时对象吗?

如果我错了,请纠正我。

谢谢!

1 个答案:

答案 0 :(得分:1)

您的复制构造函数没问题,请尝试

   int main() {

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

复制构造函数在构造时从另一个现有对象调用一次。其他时候调用赋值运算符。通过说Abc kk = Abc();,你只是调用默认构造函数。