欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++類(lèi)的繼承的基本認(rèn)識(shí)-創(chuàng)新互聯(lián)

一.繼承的含義

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的大通網(wǎng)站建設(shè)公司,大通接單;提供成都網(wǎng)站制作、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行大通網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

      繼承是面向?qū)ο髲?fù)用的重要手段。通過(guò)繼承定義一個(gè)類(lèi),它們的類(lèi)型之間的關(guān)系建模,共享公有的東西,實(shí)現(xiàn)各自本質(zhì)不同的東西。

二.繼承關(guān)系與訪問(wèn)限定符

C++類(lèi)的繼承的基本認(rèn)識(shí)

有如下總結(jié):

      1.基類(lèi)的私有成員在派生類(lèi)中是不能被訪問(wèn)的,如果一些基類(lèi)成員不想被基類(lèi)對(duì)象直接訪問(wèn),但需要在派生類(lèi)中能訪問(wèn),就定義為保護(hù)成員。可以看出保護(hù)成員限定符是因繼承才出現(xiàn)的。

例如:

  1. class Date
    {
    public:
        Date()
        {
            cout << "Date()" << endl;
        }
        ~Date()
        {
            cout << "~Date()" << endl;
        }
        void Display()
        {
            cout << _year << "-" << _month << "-" << _day << endl;
        }
    public:
        int _year;
    protected:
        int _month;
    private:
        int _day;
    };
    class Time : public Date
    {
    public:
        Time()
        {
            cout << "Date()" << endl;
        }
        ~Time()
        {
            cout << "~Date()" << endl;
        }
        void Display()
        {
            cout << _year << "-";
            cout << _month << "-";
            //cout<< _day << "-";    //派生類(lèi)中不能訪問(wèn)基類(lèi)的private成員。
            cout << _hour << "-" << _minute << "-" << _second << endl;
        }
    public:
        int _hour;
    protected:
        int _minute;
    private:
        int _second;
    };

      2.public繼承是一個(gè)接口繼承,保持is-a原則,每個(gè)父類(lèi)可用的成員對(duì)子類(lèi)也可用,因?yàn)槊總€(gè)子類(lèi)對(duì)象也都是一個(gè)父類(lèi)對(duì)象。

void Test1()
{
    Time t;
    Date t1;
    //t = t1;  //父類(lèi)對(duì)象不可以給子類(lèi)對(duì)象賦值
    t1 = t;    //子類(lèi)對(duì)象不可以給父類(lèi)對(duì)象賦值
    Time* p1 = NULL;  
    Date* p2 = NULL;
    p2 = &t;      //父類(lèi)的指針/引用可以指向子類(lèi)對(duì)象
    //p1 = &t1;   //子類(lèi)的指針/引用不能指向父類(lèi)對(duì)象(可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換完成)
    t._hour = 0;
}

      3.protetced/private繼承是一個(gè)實(shí)現(xiàn)繼承,基類(lèi)的部分成員并未完全成為子類(lèi)接口的一部分,是 has-a 的關(guān)系原則。

      4. 不管是哪種繼承方式,在派生類(lèi)內(nèi)部都可以訪問(wèn)基類(lèi)的公有成員和保護(hù)成員,但是基類(lèi)的私有成員存在但是在子類(lèi)中不可見(jiàn)(不能訪問(wèn))。

class Date
{
public:
    Date()
    {
        cout << "Date()" << endl;
    }

    ~Date()
    {
        cout << "~Date()" << endl;
    }
    void Display()
    {
        cout << _year << "-" << _month << "-" << _day << endl;
    }

public:
    int _year;
protected:
    int _month;
private:
    int _day;
};

class Time : protected Date
{
public:
    Time()
    {
        cout << "Date()" << endl;
    }

    ~Time()
    {
        cout << "~Date()" << endl;
    }

    void Display()
    {
        cout << _year << "-";
        cout << _month << "-";
        //cout<< _day << "-";          
        cout << _hour << "-" << _minute << "-" << _second << endl;
    }

public:
    int _hour;
protected:
    int _minute;
private:
    int _second;
};

void test2()
{
    Time t;
    t._year = 0;   
    t._month = 0;   //不能在外界訪問(wèn)父類(lèi)的公有成員和保護(hù)成員。
    t._hour = 0;
}

      5.使用關(guān)鍵字class時(shí)默認(rèn)的繼承方式是private,使用struct時(shí)默認(rèn)的繼承方式是public,不過(guò)最好顯示的寫(xiě)出繼承方式。

      6.繼承體系中的作用域

           (1).繼承體系中基類(lèi)和派生類(lèi)都有獨(dú)立的作用域。

           (2).子類(lèi)和父類(lèi)中有同名成員,子類(lèi)成員將屏蔽父類(lèi)對(duì)成員的直接訪問(wèn)。(在子類(lèi)成員函數(shù)中,可以使用 基類(lèi)::基類(lèi)成員 訪問(wèn))--隱藏

class Date
{
public:
    Date()
    {
        cout << "Date()" << endl;
    }

    ~Date()
    {
        cout << "~Date()" << endl;
    }
    void Display()
    {
        cout << _year << "-" << _month << "-" << _day << endl;
    }

public:
    int _year;
protected:
    int _month;
private:
    int _day;
};

class Time : protected Date
{
public:
    Time()
    {
        cout << "Date()" << endl;
    }

    ~Time()
    {
        cout << "~Date()" << endl;
    }

    void Display()
    {
        Date::Display();     //可以通過(guò)這樣的方式訪問(wèn)
        cout << _hour << "-" << _minute << "-" << _second << endl;
    }

public:
    int _hour;
protected:
    int _minute;
private:
    int _second;
};


void test3()
{
    Time t;
    t.Display(); //在外部調(diào)用,調(diào)用的是父類(lèi)的函數(shù)
}

三.派生類(lèi)的成員函數(shù)

      在繼承關(guān)系里面,在派生類(lèi)中如果沒(méi)有顯示定義這六個(gè)成員函數(shù),編譯系統(tǒng)則會(huì)默認(rèn)合成這六個(gè)默認(rèn)的成員函數(shù)。且會(huì)調(diào)用父類(lèi)的構(gòu)造函數(shù)。

class Date
{
public:
    Date()
    {
        cout << "Date()" << endl;
    }

    ~Date()
    {
        cout << "~Date()" << endl;
    }
    void Display()
    {
        cout << _year << "-" << _month << "-" << _day << endl;
    }

public:
    int _year;
protected:
    int _month;
private:
    int _day;
};

class Time : protected Date
{
public:
    void Display()
    {
        Date::Display();
        cout << _hour << "-" << _minute << "-" << _second << endl;
    }

public:
    int _hour;
protected:
    int _minute;
private:
    int _second;
};

void test3()
{
·    Time t;
00182A9D  lea         ecx,[t]  
00182AA0  call        Time::Time (01813FCh)  //通過(guò)匯編代碼看出調(diào)用了構(gòu)造函數(shù)
00182AA5  mov         dword ptr [ebp-4],0  
    t.Display();
}

四.菱形繼承與虛繼承

C++類(lèi)的繼承的基本認(rèn)識(shí)

      從上面經(jīng)典的菱形繼承可以看出,C類(lèi)里面保存了兩份A類(lèi)的值,在空間上造成了冗余浪費(fèi),且訪問(wèn)時(shí),要顯示指定訪問(wèn)哪個(gè)父類(lèi)的成員。

class A
{
public:
    A(int data = 0)
        :_a(data)
    {}
//private:
    int _a;
};
class B1 : public A
{
public:
    B1(int data=0)
        :_b1(data)
    {}
private:
    int _b1;
};
class B2 : public A
{
public:
    B2(int data = 0)
        :_b2(data)
    {}
private:
    int _b2;
};
class C :public B1,public B2
{
public:
    C(int data = 0)
        :_c(data)
    {}
    void fun()
    {
        //_a = 0;   //指示不明確。
        B1::_a = 1;  
        B2::_a = 2;
    }
private:
    int _c;
};

      虛繼承在繼承方式前加關(guān)鍵字virtual,它解決了在菱形繼承體系里面子類(lèi)對(duì)象包含多份父類(lèi)對(duì)象的數(shù)據(jù)冗余&浪費(fèi)空間的問(wèn)題。

C++類(lèi)的繼承的基本認(rèn)識(shí)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:C++類(lèi)的繼承的基本認(rèn)識(shí)-創(chuàng)新互聯(lián)
分享鏈接:http://aaarwkj.com/article28/cdhgjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)建站公司、企業(yè)網(wǎng)站制作、App設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
国产成人公开免费视频| 国产乱一伦一性一情一色| 欧美日韩精品一区二区三| 国产激情在线四五区观看| 免费av不卡一区二区| 久久综合伊人欧美精品| 不卡视频一区二区日韩| 国内一级黄色片免费观看| 操你啦夜夜操狠狠躁天天爽| 亚洲国产精品日韩专区av有中文| 日本久久久精品福利视频| 国产熟女一区二区精品视频| 熟女另类视频在线观看| 一本在线不卡中文字幕| 蜜臀视频网站在线观看| 成人在线视频国产自拍| 国产精品一区二区激情视频| 91日本精品免费在线视频| 成年人收看黄色一二级片| 天堂社区人妻在线亚洲| 亚洲一区二区精品欧美日韩| 精品少妇熟女av免费久久| 国产午夜福利一区在线| 视频在线免费观看97| 特黄特色的日本大片| 岛国免费av在线观看| 国产日韩精品免费在线| 日韩精品一区二区三区高清| 国产精品亚洲综合制服日韩 | 91精品人妻互换一区二区| 羞羞的视频免费观看在线| 精品一区二区在线欧美日韩| 91人妻精品一区二区| 国产尤物直播在线观看| 欧美精品福利一区二区三区| 日韩性视频激情在线一区| 97精品免费视频观看| 一区二区中文字幕日本韩国| 国产av蜜臀一区二区三区| 日本伦理三级在线观看| 国产乱码免费一区二区三区|