이를테면


#include<iostream>

using namespace std;


class fuck{

private:

int a;


public:

fuck(int x) {a=x; cout<<a<<"constructed"<<endl;}

~fuck() {cout<<a<<"destructed"<<endl;}

};


int main(void){

fuck a(10);

a.~fuck();

fuck b(20);

return 0;

}


이 코드를 컴파일하면


10constructed

10destructed

20constructed

20destructed

10destructed



이런 결과가 출력됨
분명히 10이 들어간 객체를 먼저 소멸자 불렀는데도 프로그램 종료시 소멸이 또됨(맨 밑10destructed)
어떻게 해야 프로그램 종료 전에 완전삭제 가능?