강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

thd2tn님의 프로필 이미지
thd2tn

작성한 질문수

홍정모의 따라하며 배우는 C++

12.4 가상 소멸자

3분 10초 부근 질문 있습니다.

해결된 질문

작성

·

240

0

~Base()가 virtual 이라면은 ~Base() 대신에 오버라이드된 ~Derived()가 실행이 되고 끝이 아니라 왜 ~Base()도 실행이 되나요?

~Derived() override
{
	cout << "~Derived()" << endl;
	delete[] m_array;
	Base::~Base();
}

저는 이렇게 해야될 걸로 예상했는데 소멸자는 예외인가요?

답변 1

3

홍정모님의 프로필 이미지
홍정모
지식공유자

좋은 질문인데, 이건 C++ 언어가 그렇게 만들어진 것 입니다. C++ 를 설계할 때 이렇게 작동하도록 정해놓은 것이지요. 그렇다면 왜 이렇게 설계했는지가 궁금하실텐데 지금 적어놓으신 코드 처럼 부모의 소멸자를 매번 적어주는 것은 번거롭다고 판단하셨을 겁니다.

여기도 참고하세요.

https://stackoverflow.com/questions/677620/do-i-need-to-explicitly-call-the-base-virtual-destructor

 

thd2tn님의 프로필 이미지
thd2tn

작성한 질문수

질문하기