소멸자에 대해 이해할 수있는 문제가 있습니다.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;
}
나는 다음과 같은 출력 얻을 : 다음 예에서
내가 소멸자는 항상 호출되는 것을 생각했기 때문에,
이 나에게 전혀 예기치 못한 파괴를 할 때 객체를 멈추다.
그러나이 예제에서는 오브젝트 1이 존재하고 오브젝트 2로 대체됩니다. 오브젝트 1의 소멸자를 호출하는 대신 오브젝트 2의 소멸자가 호출됩니다.
누군가 설명 할 수 있습니까?
메인 반환 후에 만 멈추는 것은 멈추지 않고, 당신은 op = – PlasmaHH