天天看點

C++中繼承的總結

一. 繼承的概念

繼承機制是面向對象程式設計使代碼可以複用的最重要的手段,它允許程式員在保持原有類特性的基礎上進行擴充,增加功能。這樣産生新的類,稱為派生類。繼承呈現了面向對象程式設計的層次結構,展現了由簡單到複雜的認知過程。通過繼承機制,可以利用已有的資料類型來定義新的資料類型。所定義的新的資料類型不僅擁有新定義的成員,而且還同時擁有舊的成員。我們稱已存在的用來派生新類的類為基類,又稱為父類。由已存在的類派生出的新類稱為派生類,又稱為子類。

二.繼承方式

C++中繼承的總結

三.繼承體系中的作用域

1. 在繼承體系中基類和派生類是兩個不同作用域。

2. 子類和父類中有同名成員,子類成員将屏蔽父類對成員的直接通路。(在子類成員函數中,可以使用 基類::基類成員 通路)–隐藏 –重定義

3. 注意在實際中在繼承體系裡面最好不要定義同名的成員。

class base
{
public:
    base(const char* name = "",int id = )
        :_name(name),_num(id)
    {}
protected:
    string _name;   //姓名
    int _num;     //身份證号   與子類_num成員同名
};
class derive  :public base
{
public:
    derive(const char* name,int id,int num)
        :base(name,id),_num(num)
    {}

    void Display()
    {
        cout << "身份證号:" << base::_num << endl;  //通過作用域解析符來指定
        cout << "學号:" << _num << endl;
    }
protected:
    int _num;   //學号   與父類_num成員同名
};
void Test()
{
    derive d("paul",,);
    d.Display();
}
int main()
{
    Test();
    system("pause");
    return ;
}
           

四.繼承關系

1.單繼承

一個子類隻有一個直接父類時稱這個繼承關系為單繼承。

C++中繼承的總結

2.多繼承

一個子類有兩個或以上直接父類時稱這個繼承關系為多繼承。

C++中繼承的總結

3.菱形繼承

C++中繼承的總結

五.對象模型

有兩個概念可以解釋C++對象模型:

1、語言中直接支援面向對象程式設計的部分。

2、對于各種支援的底層實

C++中繼承的總結

六.虛拟繼承

虛拟繼承是面向對象程式設計中的一種技術,是指一個指定的基類,在繼承體系結構中,将其成員資料執行個體共享給也從這個基類型直接或間接派生的其它類,它可共享的特性,避免了拷貝多份相同的資料,進而解決菱形繼承的二義性和資料備援的問

class Base
{
public:
    Base() 
    {
        cout << "B()" << endl;
    }
    int b1;
};
class Derive : virtual public Base
{
public:
    Derive() 
    {
        cout << "D()" << endl;
    }
    int d1;
};
void Test()
{
     Derive tmp;
     tmp.d1 = ;
     tmp.b1 = ;
}
int main()
{
     Test();
     getchar();
     return ;
}
           

繼續閱讀