C++繼承(二)-創新互聯

多態是一種泛型編程的思想,虛函數是其實現的手段(利用父類的指針指向子類的空間)。好了 , 開始正文->

創新互聯是一家專業提供屯留企業網站建設,專注與成都做網站、成都網站設計、H5高端網站建設、小程序制作等業務。10年已為屯留眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。

來一段基本代碼:

#include <iostream>
using namespace std;
class CPeople
{
public:
    virtual void goHome()
    {
        cout << " Go Home" << endl;
    }
};
class Aonaufly : public CPeople
{
    void goHome()
    {
        cout << " Go Wuhan" << endl;
    }
};
int main()
{
    CPeople * people_1 = new Aonaufly;
    people_1->goHome();
    delete people_1;
    return 0;
}

運行結果:

C++ 繼承(二)

解析 :

① 虛函數的關鍵字是 : virtual (定義格式 : virtual void goHome())

② 子類中也有一個goHome函數,因為在父類中goHome函數是個虛函數。所以子類中的goHome 與 父類中的goHome形成了重寫。(虛函數形成重寫 , 普通函數形成覆蓋)

③ CPeople * people_1 = new Aonaufly; 即用 利用父類的指針指向子類的空間。(不能申明為棧 , 因為棧區隊形沒有指針概念)這種形式在C# / Java當中也很常見

④ 實際上在子類中的virtual可以省略不寫,編譯會自動加上

C++ 繼承(二)

如果,在子類中不重寫虛函數 :

#include <iostream>
using namespace std;
class CPeople
{
public:
    virtual void goHome()
    {
        cout << " Go Home" << endl;
    }
};
class Aonaufly : public CPeople
{
};
int main()
{
    CPeople * people_1 = new Aonaufly;
    people_1->goHome();
    delete people_1;
    return 0;
}

結果:

C++ 繼承(二)

解析:

① 因為子類沒有重寫父類虛函數goHome,所以調用父類的goHome

純虛函數 -> 沒有實現的函數

#include <iostream>
using namespace std;
class CPeople
{
public:
    virtual void goHome() = 0;
};
class Aonaufly : public CPeople
{
    virtual void goHome()
    {
        cout << " Go Wuhan" << endl;
    }
};
int main()
{
    CPeople * people_1 = new Aonaufly;
    people_1->goHome();
    delete people_1;
    return 0;
}

結果:

C++ 繼承(二)

解析:

① 純虛函數 virtual void goHome() = 0 。一個父類中都是純虛函數,這個類就是接口類 ; 如果這個父類不全是純函數那這個父類就是抽象類。

② 有純虛函數的類 , 不能被實例化 。只能通過繼承 , 在子類中實現(必須在子類中重寫)

重點補充:

① 重寫虛函數 , 函數名稱 / 函數參數列表 / 函數返回值類型必須是一樣(絕大部分情況 )

② 特殊情況:

#include <iostream>
using namespace std;
class CPeople
{
public:
    virtual CPeople& goHome()
    {
        cout << " Go Home" << endl;
        return (*this);
    }
};
class Aonaufly : public CPeople
{
    virtual Aonaufly& goHome()
    {
        cout << " Go Wuhan" << endl;
        return (*this);
    }
};
int main()
{
    CPeople * people_1 = new Aonaufly;
    people_1->goHome();
    delete people_1;
    return 0;
}

結果:

C++ 繼承(二)

這是一個特殊的情況返回值不一樣也會構成重寫 , 這個情況叫協變。

虛析構

為了時子類,父類中的機構函數都被調用,需要使用虛析構(不然 , 只會調用父類的的 )

#include <iostream>
using namespace std;
class CPeople
{
public:
    virtual CPeople& goHome()
    {
        cout << " Go Home" << endl;
        return (*this);
    }
    virtual ~CPeople()
    {
        cout << "Cpeople" << endl;
    }
};
class Aonaufly : public CPeople
{
    virtual Aonaufly& goHome()
    {
        cout << " Go Wuhan" << endl;
        return (*this);
    }
    ~Aonaufly()
    {
        cout << "Aonaufly" << endl;
    }
};
int main()
{
    CPeople * people_1 = new Aonaufly;
    //people_1->goHome();
    delete people_1;
    return 0;
}

結果:

C++ 繼承(二)

關于虛繼承

存在多繼承的時候一定要使用虛繼承

B,C繼承于A 。 D繼承B和C。若A與一個參數a,使用D.a就會造成歧義(從B,C繼承了2個a)。那么B,C都要使用虛繼承

class B : virtual public A

虛繼承 只是繼承使用權(相當于指針),并不復制A中的a

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文題目:C++繼承(二)-創新互聯
文章轉載:http://m.kartarina.com/article42/ccggec.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化移動網站建設全網營銷推廣網站設計公司手機網站建設外貿網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 亚洲AV无码一区二区二三区入口| 蜜臀AV无码精品人妻色欲| 免费无码不卡视频在线观看| 无码人妻aⅴ一区二区三区| 国产在线无码视频一区| 亚洲av无码一区二区三区乱子伦| 亚洲av无码一区二区三区在线播放 | 亚洲AV无码AV吞精久久| 亚洲AV无码国产剧情| 日韩精品无码AV成人观看| 精品无码国产一区二区三区51安| 亚洲日韩v无码中文字幕| 国产AV无码专区亚洲AV麻豆丫| 国产成人无码一区二区在线播放| 2020无码专区人妻系列日韩| 亚洲Av永久无码精品三区在线| 精品无码中出一区二区| 无码区日韩特区永久免费系列| 国精品无码一区二区三区在线蜜臀| 亚洲AV无码XXX麻豆艾秋| AV大片在线无码永久免费| 亚洲日韩欧洲无码av夜夜摸| 免费A级毛片无码久久版 | 亚洲无码视频在线| 毛片一区二区三区无码| 中文字幕无码乱码人妻系列蜜桃 | 亚洲无码精品浪潮| 国产在线拍揄自揄拍无码视频| 精品人妻大屁股白浆无码| 亚洲成AV人片在线播放无码| 中文字幕无码无码专区| 国产精品午夜福利在线无码| 日韩AV片无码一区二区不卡| 少妇久久久久久人妻无码| 亚洲精品无码高潮喷水A片软| 高清无码午夜福利在线观看| 亚洲av无码专区在线观看亚| 亚洲爆乳精品无码一区二区| 无码一区二区三区免费视频| 国产午夜av无码无片久久96| 无码精品人妻一区|