상속 클래스의 생성자와 소멸자
Parent 클래스나 child 클래스는 모두 생성자 함수 또는 소멸자 함수를 멤버로 가질 수 있다. Parent 클래스와 child 클래스가 모두 생성자 함수와 소멸자 함수를 갖고 있는 경우에 생성자는 파생된 순서에 따라 호출되고, 소멸자는 파생된 역순으로 호출되어 실행된다.
즉, child class의 객체가 생성되면, 먼저 parent 클래스의 생성자 함수가 호출되고 child 클래스의 생성자 함수가 호출되어 실행된다. 반대로 생성된 child class 객체가 소멸되면, child class의 소멸자가 호출되고 parent class의 소멸자가 호출되어 실행된다.
예제
#include <iostream>
using namespace std;
class parent { // Parent class 정의
public:
parent() {
cout << "Parent class의 constructor 실행" << endl; //생성자
}
~parent() {
cout << "Parent class의 destructor 실행" << endl; //소멸자
};
};
class child : public parent { //Child 클래스의 정의
public:
child() {
cout << "Child class의 constructor 실행" << endl; //생성자
cout << "Child class의 destructor 실행" << endl; //소멸자
};
};
int main()
{
child ob; //Child class의 객체 생성
return 0;
}
실행 결과
Parent class의 constructor 실행
Child class의 constructor 실행
Child class의 destructor 실행
Parent class의 destructor 실행
- Child class의 객체 ob가 생성될 때 생성자 함수는 파생된 순서에 따라 호출되고, 소멸자 함수는 파생된 역순으로 호출되어 실행된다.
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13
'C++ 기초 1' 카테고리의 다른 글
[C++] 4-4 클래스 다중 상속 (2) | 2023.12.22 |
---|---|
[C++] 4-3 부모 클래스의 생성자 매개변수 전달 (1) | 2023.12.21 |
[C++] 4-1 클래스의 상속 (inheritance) (1) | 2023.12.19 |
[C++] 3-5 프렌드 (friend) 함수 사용 이유 및 예제 (0) | 2023.12.18 |
[C++] 3-4 함수에 클래스 객체를 call by reference로 전달 (1) | 2023.12.13 |