在C++中,多重繼承可以通過在派生類的定義中使用逗號(hào)分隔的基類列表來實(shí)現(xiàn)。下面是一個(gè)示例代碼:
class Base1 {
public:
void func1() {
cout << "Base1::func1()" << endl;
}
};
class Base2 {
public:
void func2() {
cout << "Base2::func2()" << endl;
}
};
class Derived : public Base1, public Base2 {
public:
void func3() {
cout << "Derived::func3()" << endl;
}
};
int main() {
Derived d;
d.func1(); // 調(diào)用Base1的成員函數(shù)
d.func2(); // 調(diào)用Base2的成員函數(shù)
d.func3(); // 調(diào)用Derived的成員函數(shù)
return 0;
}
在上面的代碼中,我們定義了兩個(gè)基類 Base1
和 Base2
,然后在派生類 Derived
的定義中使用了逗號(hào)分隔的基類列表 public Base1, public Base2
。這樣,Derived
類就同時(shí)繼承了 Base1
和 Base2
的成員函數(shù)。
在 main
函數(shù)中,我們創(chuàng)建了一個(gè) Derived
類的對(duì)象 d
,然后可以通過 d
調(diào)用繼承自基類的成員函數(shù) func1
、func2
和 func3
。
需要注意的是,多重繼承可能會(huì)帶來一些問題,比如名稱沖突(兩個(gè)基類有相同的成員函數(shù)或變量名)和二義性(派生類繼承了多個(gè)基類,這些基類之間存在相同的成員函數(shù))。為了解決這些問題,可以使用作用域解析運(yùn)算符 ::
來顯式指定調(diào)用的是哪個(gè)基類的成員函數(shù)。