상속 선언
1
class Dog : public Animal로 기반 인터페이스를 파생
객체에 공개한다.
상속 구현은 선언, 기반 생성자 호출, 파생 멤버 초기화, 재정의 함수 호출, 소멸 순서까지 하나의 흐름으로 읽으면 명확하다.
class Dog : public Animal로 기반 인터페이스를 파생
객체에 공개한다.
Animal(n, "개", a)가 먼저 실행되어 이름, 종, 나이를
채운다.
breed(b)로 Dog 전용 상태를 채우고
생성자 본문을 실행한다.
displayInfo()는 Dog 구현에서 기반 출력
뒤 견종을 추가한다.
Dog 소멸자 다음
Animal 소멸자가 호출된다.
Dog(string n, int a, string b)
Animal(n, "개", a)가 먼저 생성된다.
breed(b)로 Dog 전용 상태를 채운다.
cout << getName()
Dog::displayInfo() 선택 후
Animal::displayInfo()를 호출한다.
Dog myDog의 내부 구성
파생 객체는 기반 클래스 부분 객체와 파생 클래스 전용 멤버를
함께 가진다.
myDog.displayInfo()
Dog::displayInfo()가 선택되고, 그 안에서
Animal::displayInfo()를 명시 호출한다.
myDog.bark()
Dog가 새로 추가한 멤버 함수라서 기반 클래스에는 없는
동작이다.
myDog.getName()
public 상속 덕분에 기반 클래스의 public getter를 파생 객체에서
그대로 쓴다.