[디딤돌 C++] 28. 파생 개체의 생성과 소멸 과정

학생) 기반 형식에 기본 생성자가 없을 때는 파생 형식 생성자에서 기반 형식 생성자 초기화를 해 주어야 해요.

이번에는 일반화 관계에 있는 파생 클래스 형식의 개체를 생성과 소멸 과정을 알아보기로 할게요.

파생 클래스 형식의 개체를 생성할 때는 기반 클래스를 생성한 후에 파생 클래스를 생성합니다. 실제 생성한 개체에는 기반 클래스에 정의한 멤버도 만들어지는 것이죠. 그리고 소멸할 때는 생성 과정의 역으로 파생 클래스의 소멸자를 수행한 후에 기반 클래스의 소멸자를 수행합니다.

다음은 이를 확인하기 위해 기반 클래스 음악가와 파생 클래스 피아니스트 클래스에 생성자와 소멸자를 추가하여 어떤 순서로 수행하는지 확인하기 위한 출력문을 작성한 예제 코드입니다.

 

▷ 실행 결과

음악가 생성자

피아니스트 생성자

딩동댕

피아니스트 소멸자

음악가 소멸자

 

실행 결과를 보면 피아니스트 개체를 생성할 때 기반 클래스인 음악가 생성자를 먼저 수행한 후에 파생 클래스인 피아니스트의 생성자를 수행하는 것을 알 수 있습니다. 또한 소멸 과정에서는 역으로 피아니스트의 소멸자를 수행한 후에 음악가의 소멸자를 수행하는 것을 확인할 수 있어요.

그런데 기반 클래스에 기본 생성자를 정의하지 않고 매개 변수가 있는 생성자만 정의하면 파생 개체는 어떻게 생성할까요?

기반 클래스에 매개 변수 있는 생성자만 정의하면 개체를 생성하기 위해 인자를 전달해야 합니다. 이를 기반으로 파생 클래스를 정의하면 파생 개체를 생성할 때 기반 클래스의 생성자를 호출할 때 인자를 전달하지 않으면 컴파일 오류가 발생하겠죠.

이와 같을 때는 비정적 상수화 멤버 초기화처럼 파생 클래스 생성자에 기반 클래스의 생성자 초기화를 해 주어야 합니다.

다음은 기반 클래스 음악가의 생성자에 이름을 입력 인자로 받게 정의한 예제입니다. 파생 클래스인 피아니스트의 생성자 부분을 보면 기반 클래스 생성자 초기화 부분을 확인할 수 있습니다.

 

▷ 실행 결과

음악가 생성자

피아니스트 생성자

이름: 홍길동

딩동댕

피아니스트 소멸자

음악가 소멸자


[C++ 무료 동영상 강의] 28. 파생 개체의 생성과 소멸 과정