부모 클래스의 생성자 매개변수
Object가 생성될 때 생성자 함수에 매개변수를 전달하여 클래스의 데이터 멤버들을 초기화할 수 있다. 자식 클래스의 object가 생성될 때 부모 클래스와 자식 클래스의 생성자 함수에 매개변수를 전달할 수 있다. 그러나 부모 클래스의 생성자 함수에 매개변수를 전달하려면 이를 위한 연결고리가 형성되어 있어야 한다. 자식 클래스를 통해서 부모 클래스에 매개변수가 전달되도록 파생 클래스의 생성자 함수를 아래 예제와 같이 확장된 형식으로 선언하면 된다.
예제
#include <iostream>
using namespace std;
class parent {
private:
int age;
public:
parent(int a) {
cout << "부모 클래스의 생성자 실행" << endl;
age = a;
}
~parent() {
cout << "부모 클래스의 소멸자 실행" << endl;
}
void output_1() {
cout << "age=" << age << endl;
}
};
class child : public parent {
private:
int height;
public:
child(int a, int h) : parent(a) {
cout << "자식 클래스의 생성자 실행" << endl;
height = h;
}
~child() {
cout << "자식 클래스의 소멸자 실행" << endl;
}
void output_2() {
cout << "height=" << height << endl;
}
};
int main()
{
child ob(6, 125);
ob.output_1();
ob.output_2();
return 0;
}
실행 결과
부모 클래스의 생성자 실행
자식 클래스의 생성자 실행
age=6
height=125
자식 클래스의 소멸자 실행
부모 클래스의 소멸자 실행
- 위 예제에서 부모 클래스와 자식 클래스의 생성자 함수 모두 매개변수를 사용하고 있다.
- 자식 클래스 child형의 객체 ob가 생성될 때, 생성자 함수는 파생된 순서에 따라 호출되고, 소멸자 함수는 파생된 역순으로 호출되어 실행된다.
- child(int a, int h) : parent(a) 이러한 형식으로 자식 클래스의 매개변수를 부모 클래스로 전달한다.
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13
'C++ 기초 1' 카테고리의 다른 글
[C++] 4-5 가상 기본 클래스 (Virtual base class) (0) | 2023.12.26 |
---|---|
[C++] 4-4 클래스 다중 상속 (2) | 2023.12.22 |
[C++] 4-2 상속 클래스의 생성자와 소멸자 (0) | 2023.12.20 |
[C++] 4-1 클래스의 상속 (inheritance) (1) | 2023.12.19 |
[C++] 3-5 프렌드 (friend) 함수 사용 이유 및 예제 (0) | 2023.12.18 |