공부중

[C++] 상속관계에서의 생성자 소멸자 호출 본문

Programing/C, C++

[C++] 상속관계에서의 생성자 소멸자 호출

곤란 2018. 11. 4. 14:15
반응형

역시 이번에도 기초적인 내용이었다.

 

 

#include <iostream>

class A
{
public:
	A() { std::cout << "A 생성자" << std::endl; }
	~A() { std::cout << "A 소멸자" << std::endl; }

};

class B : public A
{
public:
	B() { std::cout << "B 생성자" << std::endl; }
	~B() { std::cout << "B 소멸자" << std::endl; }

};

int main()
{
	A* a = new B();

	delete a;

	return 0;
}

코드는 위와 같다.

 

여기서 출력결과는 어떻게 될 것인가...

주목해야될것은 B의 부모는 A 클래스이고 각각의 클래스 소멸자에 virtual이 안붙어 있다.

 

이러면 당연히 소멸자에서는 부모먼저 제거가 되므로....

생성자는 A,B 순서 소멸자는 A 하고 끝날것이다....

 

출력결과는 아래와 같다.

 

 

 

 

 

 

 

 

 

 

 

반응형