# 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()正在创建一个临时对象吗?
如果我错了,请纠正我。
谢谢!
答案 0 :(得分:1)
您的复制构造函数没问题,请尝试
int main() {
Abc kk;
Abc kk1 = kk;
cout<<kk.a<<endl;
return 0;
}
复制构造函数在构造时从另一个现有对象调用一次。其他时候调用赋值运算符。通过说Abc kk = Abc();
,你只是调用默认构造函数。