다중 상속(Multiple Inheritance)이란?
다중 상속은 하나의 클래스가 둘 이상의 기반(base) 클래스로부터 상속받는 것을 의미합니다. 다중 상속을 활용하면 파생 클래스가 여러 기반 클래스의 멤버 변수와 함수를 한꺼번에 물려받을 수 있어 코드 재사용성이 크게 향상됩니다. 이는 C++를 대표하는 객체 지향 프로그래밍의 핵심 기능 중 하나입니다.
다중 상속의 구조를 나타낸 다이어그램은 아래와 같습니다.

C++ 다중 상속 구현 예제
다음은 C++에서 다중 상속을 구현한 전체 프로그램입니다.
#include <iostream>
using namespace std;
class A {
public:
int a = 5;
A() {
cout << "Constructor for class A" << endl;
}
};
class B {
public:
int b = 10;
B() {
cout << "Constructor for class B" << endl;
}
};
class C: public A, public B {
public:
int c = 20;
C() {
cout << "Constructor for class C" << endl;
cout<<"Class C inherits from class A and class B" << endl;
}
};
int main() {
C obj;
cout<<"a = "<< obj.a <<endl;
cout<<"b = "<< obj.b <<endl;
cout<<"c = "<< obj.c <<endl;
return 0;
}실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Constructor for class A Constructor for class B Constructor for class C Class C inherits from class A and class B a = 5 b = 10 c = 20
예제 코드 상세 분석
1. 기반 클래스 A와 B 정의
먼저 두 개의 기반 클래스인 A와 B를 정의합니다. 각 클래스는 public 데이터 멤버와 생성자를 가지고 있습니다.
class A {
public:
int a = 5;
A() {
cout << "Constructor for class A" << endl;
}
};
class B {
public:
int b = 10;
B() {
cout << "Constructor for class B" << endl;
}
};2. 파생 클래스 C 정의
클래스 C는 클래스 A와 B를 동시에 상속받습니다. 바로 이 부분이 다중 상속의 핵심입니다. 상속 문법은 콜론(:) 뒤에 접근 지정자와 함께 여러 기반 클래스를 쉼표로 나열하는 형태입니다.
class C: public A, public B {
public:
int c = 20;
C() {
cout << "Constructor for class C" << endl;
cout<<"Class C inherits from class A and class B" << endl;
}
};3. main() 함수에서 객체 생성 및 멤버 접근
main() 함수에서 클래스 C의 객체 obj를 생성하면, A → B → C 순서로 생성자가 자동으로 호출됩니다. 즉, 기반 클래스의 생성자가 먼저 실행된 후 파생 클래스의 생성자가 호출되며, 각 생성자 내부의 내용이 화면에 출력됩니다.
이후 객체 obj를 통해 a, b, c 값을 출력합니다. 여기서 a는 클래스 A, b는 클래스 B, c는 클래스 C의 데이터 멤버입니다. 해당 코드는 다음과 같습니다.
C obj; cout<<"a = "<< obj.a <<endl; cout<<"b = "<< obj.b <<endl; cout<<"c = "<< obj.c <<endl;
정리
C++의 다중 상속은 하나의 파생 클래스가 여러 기반 클래스의 기능을 결합할 수 있게 해주는 강력한 기능입니다. 단, 상속받는 클래스들이 서로 같은 이름의 멤버를 가질 경우 모호성(ambiguity) 문제가 발생할 수 있으므로, 필요하다면 범위 지정 연산자(::)나 가상 상속(virtual inheritance)을 활용해야 합니다.