多繼承可以看作是單繼承的擴展。所謂多繼承是指派生類具有多個基類,派生類與每個基類之間的關係仍可看作是一個單繼承。
多繼承下派生類的定義格式如下:
class <派生類名>:<繼承方式1><基類名1>,<繼承方式2><基類名2>,…
{
<派生類類體>
};
其中,<繼承方式1>,<繼承方式2>,…是三種繼承方式:public、private、protected之一。例如:
class A
{
…
};
class B
{
…
};
class C : public A, public B
{
…
};
其中,派生類C具有兩個基類(類A和類B),因此,類C是多繼承的。按照繼承的規定,派生類C的成員包含了基類A、B中成員以及該類本身的成員。
多繼承的構造函式
在多繼承的情況下,派生類的構造函式格式如下:
<派生類名>(<總參數表>):<基類名1>(<參數表1>),<基類名2>(<參數表2>),…
<子對象名>(<參數表n+1>),…
{
<派生類構造函式體>
}
其中,<總參數表>中各個參數包含了其後的各個分參數表。
多繼承下派生類的構造函式與單繼承下派生類構造函式相似,它必須同時負責該派生類所有基類構造函式的調用。同時,派生類的參數個數必須包含完成所有基類初始化所需的參數個數。
派生類構造函式執行順序是先執行所繼承基類的構造函式,再執行派生類本身構造函式,處於同一層次的各基類構造函式的執行順序取決於定義派生類時所指定的各基類順序,與派生類構造函式中所定義的成員初始化列表的各項順序無關。也就是說,執行基類構造函式的順序取決於定義派生類時基類的順序。可見,派生類構造函式的成員初始化列表中各項順序可以任意地排列。