c++

wi

wiker0712
답변 대기중
- XP

소멸자 출력 순서 질문

#include <iostream>
using namespace std;

class Point {
public:
Point(int a) // 생성자
{
cout << "생성자:" << a << endl;
i = a;
}
~Point() // 소멸자
{
cout << "소멸자:" << i << endl;
}
private:
int i;
};

Point a(0);
int main() {
Point* p;
Point a(1);
{
Point a(2);
p = new Point(3);
}
delete p;
return 0;
}
해당 코드를 실행하면
생성자:0
생성자:1
생성자:2
생성자:3
소멸자:2
소멸자:3
소멸자:1
소멸자:0
이렇게 출력이 되는데 delete p에 의해 p의 동적할당이 해제되니까 소멸자:3 이 출력되고 소멸자:2가 출력되야 할거같은데 실제론 소멸자:2가 먼저 출력되네요 왜 소멸자:2가 먼저 출력되는 건가요?


불러오는 중...