Q.상속
Q. 상속이란?
Q. is-a, has-a
Q. 다이아몬드 상속 문제?
- A. 다이아몬드 상속 문제는 동일한 부모 클래스를 여러 경로로 상속받을 때 발생하는 중복과 모호성 문제이며, 가상 상속(
virtual
)을 통해 해결할 수 있습니다.
Q. 상속 관계에서 생성자와 소멸자의 호출 순서를 설명해주세요.
- A. 부모→자식 순 생성자, 자식→부모 순 소멸자
Q. 그럼 자식 클래스 포인터로 부모 클래스 객체를 delete하면 어떤 일이 발생하나요?
-
A. 기본 클래스의 소멸자가 virtual이 아니면, 파생 클래스의 소멸자가 호출되지 않아서 자원 누수나 정의되지 않은 동작(UB)이 발생할 수 있습니다.
Animal* A = new Cat();
delete A;
// Cat의 소멸자 호출되지 않음 (문제 발생)
Q. final 키워드는 왜 사용하나요?
This post is licensed under CC BY 4.0 by the author.