我對析構函數有一個理解問題。C++ - 錯誤的析構函數被調用
在下面的例子:
#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的析構函數。
有人可以解釋這一點嗎?
a只能在主返回後停止存在,在此期間它永不停止存在,您只能使用op = – PlasmaHH