본문 바로가기

C++ 기초 2

C++ 클래스 다중 상속

다중 상속

   다중 상속에는 2가지 경우가 있다. 하나는 이미 상속받은 파생 클래스를 기본 클래스로 하여 또다시 상속하는 경우와 2개 이상의 기본 클래스를 상속받아 파생 클래스를 정의하는 경우가 있다. 이러한 다중 상속을 통하여 클래스를 매우 다양하게 만들 수 있다. 자세한 내용은 아래 예제에서 참고할 수 있다. 

 

 
예제
#include <iostream>
using namespace std;

class POINT {
private:
	int sx, sy;	// private 멤버 변수

public:
	POINT(int a, int b) {	// 생성자 함수
		sx = a;
		sy = b;
	}
	int GetSx() {
		return sx;
	}
	int GetSy() {
		return sy;
	}
};

class FC {
private:
	int x1;	// private 멤버 변수
public:
	FC(int a) {
		x1 = a;
	}
	int GetX1() {
		return x1;
	}
};
// 1차 상속
class SC : public FC {
private:
	int x2;	//private로 선언된 멤버 변수
public:
	SC(int a, int b) : FC(a)
	{
		x2 = b;
	}
	int GetX2() {
		return x2;
	}
};
class TC : public SC {
private:
	int x3;
public:
	TC(int a, int b, int c) : SC(a, b) {
		x3 = c;
	}
	int GetX3() {
		return x3;
	}
};

// 2개의 기본 클래스로 파생 클래스 정의
class ComplexClass : public POINT, public FC {
private:
	int k;
public:
	ComplexClass(int a, int b, int c, int d) :POINT(a, b), FC(c) {
		k = d;
	}
	int GetK() {
		return k;
	}
};

int main() {
	TC ob1(1, 2, 3);
	cout << ob1.GetX1() << endl;
	cout << ob1.GetX2() << endl;
	cout << ob1.GetX3() << endl;
	ComplexClass ob2(10, 20, 30, 40);
	cout << ob2.GetSx() << endl;
	cout << ob2.GetSy() << endl;
	cout << ob2.GetX1() << endl;
	cout << ob2.GetK() << endl;
}
실행 결과
1
2
3
10
20
30
40
참고

1. 홍원기, Visual C++를 활용한 Windows Programming, 북스홀릭퍼블리싱, 2019.02.2

 

 

'C++ 기초 2' 카테고리의 다른 글

C++ 가상 함수(Virtual function)  (1) 2024.02.06
C++ 클래스 상속 II  (1) 2024.02.01
C++ 클래스 상속 I  (0) 2024.01.31
C++ friend 함수  (0) 2024.01.30
C++ this 포인터  (0) 2024.01.29