클래스의 생성자 인수 전달
기본 클래스와 파생 클래스는 자체에 각각 생성자와 소멸자를 가질 수 있다. 이때 생성자의 호출 순서는 먼저 기본 클래스의 생성자가 호출되고 파생 클래스의 생성자가 호출된다. 소멸자인 경우는 반대로 파생 클래스의 소멸자가 호출되고 기본 클래스의 소멸자가 호출된다.
파생 클래스의 생성자가 호출될 때, 선언된 일부 매개 변수를 기본 클래스의 생성자에게 전달해 주는 방법이 있으므로 그 문제를 예방할 수 있다.. 아래 예제에서 자세한 내용을 확인할 수 있다.
예제
#include <iostream>
using namespace std;
// 기본 클래스인 POINT 정의
class POINT {
private:
int sx, sy; // private로 선언된 멤버 변수
public:
// public으로 선언된 멤버 함수
// 기본 클래스의 생성자
POINT(int a, int b) {
sx = a;
sy = b;
}
void SetPoint(int a, int b) {
sx = a; // 변수 sx, sy는 private이므로 파생 객체는 이 멤버 함수에서만 접근 가능함
sy = b;
}
int GetSx() {
return sx;
}
int GetSy() {
return sy;
}
};
// 파생 클래스인 LINE 정의
class LINE : public POINT { // POINT 클래스를 상속 받음
private:
int ex, ey;
public:
// 파생 클래스의 생성자, 뒤에 POINT (a,b)는 기본 클래스의 생성자에게 먼저 매개 변수를 전달하여 호출
LINE(int a, int b, int c, int d) :POINT(a, b) {
ex = c; ey = d;
}
void SetNextPoint(int a, int b) {
ex = a;
ey = b;
}
int GetEx() {
return ex;
}
int GetEy() {
return ey;
}
};
int main() {
LINE object(10, 20, 30, 40);
cout << object.GetSx() << endl;
cout << object.GetSy() << endl;
cout << object.GetEx() << endl;
cout << object.GetEy() << endl;
}
실행 결과
10
20
30
40
참고
1. 홍원기, Visual C++를 활용한 Windows Programming, 북스홀릭퍼블리싱, 2019.02.2
'C++ 기초 2' 카테고리의 다른 글
C++ 가상 함수(Virtual function) (1) | 2024.02.06 |
---|---|
C++ 클래스 다중 상속 (0) | 2024.02.05 |
C++ 클래스 상속 I (0) | 2024.01.31 |
C++ friend 함수 (0) | 2024.01.30 |
C++ this 포인터 (0) | 2024.01.29 |