C++忽略了默认复制构造函数造成的疑惑:为什么“没有调用”构造,但却调用了析构
提前说一下,不是没有调用,所有对象创建时,一定调用,但是某些情况下会调用系统生成的构造
先来看一段诡异的代码:
class A {
private:
int a;
public:
A(int a = 0);
~A();
};
A::A(int a) {
this->a = a;
cout << this << "调用构造" << endl;
}
A::~A() {
cout << this << "调用析构" << endl;
}
A function(A obj) {
return obj;
}
int main() {
A obj;
function(obj);
return 0;
}