-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
3분 10초 부근 질문 있습니다.
22.11.02 07:44 작성 조회수 148
0
~Base()가 virtual 이라면은 ~Base() 대신에 오버라이드된 ~Derived()가 실행이 되고 끝이 아니라 왜 ~Base()도 실행이 되나요?
~Derived() override
{
cout << "~Derived()" << endl;
delete[] m_array;
Base::~Base();
}
저는 이렇게 해야될 걸로 예상했는데 소멸자는 예외인가요?
답변을 작성해보세요.
3
홍정모
지식공유자2022.11.02
좋은 질문인데, 이건 C++ 언어가 그렇게 만들어진 것 입니다. C++ 를 설계할 때 이렇게 작동하도록 정해놓은 것이지요. 그렇다면 왜 이렇게 설계했는지가 궁금하실텐데 지금 적어놓으신 코드 처럼 부모의 소멸자를 매번 적어주는 것은 번거롭다고 판단하셨을 겁니다.
여기도 참고하세요.
https://stackoverflow.com/questions/677620/do-i-need-to-explicitly-call-the-base-virtual-destructor
답변 1