我对析构函数有一个理解问题。
在以下示例中:
#include <iostream>
using namespace std;
class X{
public:
int id;
X(int id){
this->id = id;
}
~X(){
cout << "destroying " << id;
}
};
int main(){
X a(1);
a = X(2);
while(true);
return 0;
}
我得到以下输出:破坏 2
这对我来说完全出乎意料,因为我认为当一个对象停止存在时,总是会调用析构函数。
但在这个例子中,对象 1 停止存在并被对象 2 替换。但不是调用对象 1 的析构函数,而是调用对象 2 的析构函数。
有人可以解释一下吗?