复制构造不会被调用
问题描述:
# 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();
你只是调用默认的构造函数。