Post

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.