最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例代碼講解c++ 繼承特性

 更新時(shí)間:2020年07月02日 15:38:06   作者:綠豆sir  
這篇文章主要介紹了c++ 繼承特性的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

——派生類(lèi)需要自己的構(gòu)造函數(shù)。

        派生類(lèi)中可以根據(jù)需要添加額外的數(shù)據(jù)成員和成員函數(shù),甚至可以給予繼承的原成員函數(shù)新的定義。

   基類(lèi)指針或引用可指向派生對(duì)象,反過(guò)來(lái)則只能使用強(qiáng)制類(lèi)型轉(zhuǎn)換。

   派生類(lèi)對(duì)象可使用基類(lèi)的非私有成員。

   可使用派生對(duì)象初始化基類(lèi)對(duì)象或賦值。

   一般不允許將基類(lèi)對(duì)象賦給派生類(lèi)對(duì)象(上面第三條),特殊情況下可以。

   已有派生類(lèi)對(duì)象初始化創(chuàng)建的派生類(lèi)對(duì)象。

   已有派生類(lèi)對(duì)象給另一個(gè)派生類(lèi)對(duì)象賦值。

   派生類(lèi)對(duì)象的析構(gòu)函數(shù)被調(diào)用后會(huì)自動(dòng)調(diào)用基類(lèi)的析構(gòu)函數(shù)。

   C++11增加了允許繼承構(gòu)造函數(shù)的機(jī)制,但派生類(lèi)默認(rèn)不能繼承構(gòu)造函數(shù)和析構(gòu)函數(shù)。

class RatedPlayer : public TableTennisPlayer
 {
 private:
 unsigned int rating; // add a data member
 public:
 RatedPlayer (unsigned int r = 0, const string &fn = "none", const string &ln = "none", bool ht = false);
 RatedPlayer (unsigned int r, const TableTennisPlayer &tp);
 unsigned int Rating() const { return rating; } // add a method
 void ResetRating (unsigned int r) { rating = r; } // add a method
};

       構(gòu)造函數(shù)必須給新成員和繼承的成員提供數(shù)據(jù)。

RatedPlayer::RatedPlayer(unsigned int r, const string &fn, const string &ln, bool ht) : TableTennisPlayer(fn, ln, ht)
{
 rating = r;
}
  • 派生類(lèi)構(gòu)造函數(shù)必須使用基類(lèi)構(gòu)造函數(shù),創(chuàng)建派生類(lèi)對(duì)象時(shí),程序首先創(chuàng)建基類(lèi)對(duì)象(初始化繼承的數(shù)據(jù)成員)然后再調(diào)用派生類(lèi)構(gòu)造函數(shù)。C++使用成員初始化列表語(yǔ)法完成該操作。
  • 如沒(méi)有調(diào)用基類(lèi)構(gòu)造函數(shù),那么將隱式調(diào)用基類(lèi)的默認(rèn)構(gòu)造函數(shù)。除非要使用默認(rèn)構(gòu)造函數(shù),否則應(yīng)顯示調(diào)用正確的基類(lèi)構(gòu)造函數(shù)。

        派生類(lèi)對(duì)象過(guò)期時(shí),程序?qū)⑹紫日{(diào)用派生類(lèi)析構(gòu)函數(shù),然后再自動(dòng)調(diào)用基類(lèi)析構(gòu)函數(shù)。

        要使用派生類(lèi),程序必須要能訪問(wèn)基類(lèi)聲明。

        派生類(lèi)對(duì)象可以使用基類(lèi)的方法,條件是方法不是私有的(即公有和保護(hù))。

        基類(lèi)指針可以在不進(jìn)行顯示類(lèi)型轉(zhuǎn)換的情況下指向派生類(lèi)對(duì)象;基類(lèi)引用可以在不進(jìn)行顯示類(lèi)型轉(zhuǎn)換的情況下引用派生類(lèi)對(duì)象

RatedPlayer rplayer(1140, "Mallory", "Duck", true);
TableTennisPlayer &rt = rplayer;
TableTennisPlayer *pt =&rplayer;
rt.Name(); // invoke Name() with reference
pt->Name(); // invoke Name() with pointer

       不可以將基類(lèi)對(duì)象和地址賦給派生類(lèi)引用和指針,除非使用強(qiáng)制轉(zhuǎn)換(友元函數(shù)不是成員函數(shù)因此不能被繼承,但欲使用基類(lèi)的友元函數(shù)時(shí)可使用此方法,但要小心用錯(cuò))。

       基類(lèi)聲明的函數(shù)引用參數(shù)或指針參數(shù)可用于值為基類(lèi)對(duì)象或派生類(lèi)對(duì)象以及它們的地址的情況。

void Show(const TableTennisPlayer &rt)
{
 ...
}
TableTennisPlayer player1("Tara", "Boomdea", false);
RatedPlayer rplayer1(1140, "Mallory", "Duck", true);
Show(player1); // works with TableTennisPlayer argument
Show(rplayer1); // works with RatedPlayer argument

       省略形參為const TableTennisPlayer *rt的情況,與上相似。

       引用兼容性屬性:可以將基類(lèi)對(duì)象初始化為派生類(lèi)對(duì)象。

RatedPlayer olaf1(1840, "Olaf", "Loaf", true);
TableTennisPlayer olaf2(olaf1);

       匹配的構(gòu)造函數(shù)的原型:

TableTennisPlayer(const RatedPlayer &); // doesn't exit

       類(lèi)中并沒(méi)有該構(gòu)造函數(shù),但存在隱式復(fù)制構(gòu)造函數(shù):

// implicit copy constructor
TableTennisPlayer(const TableTennisPlayer &);

       即它將olaf2初始化為嵌套在RatedPlayer對(duì)象olaf1中的TableTennisPlayer對(duì)象(使用派生類(lèi)中嵌套的基類(lèi)對(duì)象對(duì)目標(biāo)基類(lèi)對(duì)象進(jìn)行初始化)

       同樣,也可以將派生對(duì)象賦給基類(lèi)對(duì)象:

RatedPlayer olaf1(1840, "Olaf", "Loaf", true);
TableTennisPlayer winner;
winner = olaf1; // assign derived to base object

      在這種情況下,程序使用隱式重載賦值運(yùn)算符:

TableTennisPlayer &operator=(const TableTennisPlayer &) const;

       與上類(lèi)似,使用派生類(lèi)中嵌套的基類(lèi)對(duì)象對(duì)目標(biāo)基類(lèi)對(duì)象進(jìn)行按成員賦值。

       特殊的用基類(lèi)對(duì)象給派生類(lèi)對(duì)象賦值的情況

       如果派生類(lèi)包含了將基類(lèi)對(duì)象轉(zhuǎn)換為派生類(lèi)對(duì)象的構(gòu)造函數(shù),或派生類(lèi)定義了將基類(lèi)對(duì)象賦給派生類(lèi)對(duì)象的賦值運(yùn)算符,則可以用派生類(lèi)對(duì)象給基類(lèi)對(duì)象賦值。

       用已有的派生類(lèi)對(duì)象初始化創(chuàng)建的派生類(lèi)對(duì)象

       復(fù)制類(lèi)成員或繼承的類(lèi)組件時(shí),則是使用該類(lèi)的復(fù)制構(gòu)造函數(shù)完成的,對(duì)于繼承的基類(lèi)對(duì)象來(lái)說(shuō)也是合適的。

       用已有的派生類(lèi)對(duì)象給另一個(gè)派生類(lèi)對(duì)象賦值

       按成員賦值,調(diào)用類(lèi)成員賦值運(yùn)算符,使用基類(lèi)的賦值運(yùn)算符來(lái)對(duì)基類(lèi)組件(繼承的基類(lèi)對(duì)象)進(jìn)行賦值

       若派生類(lèi)使用了動(dòng)態(tài)內(nèi)存分配,派生類(lèi)的析構(gòu)函數(shù)、復(fù)制構(gòu)造函數(shù)、復(fù)制運(yùn)算符都必須使用相應(yīng)的基類(lèi)方法來(lái)處理基類(lèi)元素(顯示調(diào)用基類(lèi)構(gòu)造函數(shù)和復(fù)制運(yùn)算符):

  • 對(duì)于析構(gòu)函數(shù),這是自動(dòng)完成的。
  • 對(duì)于復(fù)制構(gòu)造函數(shù),這是在初始化成員列表中調(diào)用基類(lèi)的復(fù)制構(gòu)造函數(shù)來(lái)完成的;如果不這么做,將自動(dòng)調(diào)用基類(lèi)的默認(rèn)構(gòu)造函數(shù)。
  • 對(duì)于復(fù)制運(yùn)算符,這是通過(guò)使用作用域解析運(yùn)算符顯示地調(diào)用基類(lèi)的賦值運(yùn)算符來(lái)完成的:
hasDMA &hasDMA::operator=(const hasDMA &has)
{
 if (this == &hs)
 return *this;
 baseDMA::operator=(hs); // copy base portion
 ...
 return *this; 
}

以上就是實(shí)例代碼講解c++ 繼承特性的詳細(xì)內(nèi)容,更多關(guān)于c++ 繼承特性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深入理解C語(yǔ)言sizeof()計(jì)算空間大小為8的問(wèn)題

    深入理解C語(yǔ)言sizeof()計(jì)算空間大小為8的問(wèn)題

    本文將介紹C語(yǔ)言中的sizeof()函數(shù),以及如何使用它來(lái)計(jì)算變量、數(shù)據(jù)類(lèi)型和數(shù)組在內(nèi)存中的大小,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • C語(yǔ)言中隊(duì)列的結(jié)構(gòu)和函數(shù)接口的使用示例

    C語(yǔ)言中隊(duì)列的結(jié)構(gòu)和函數(shù)接口的使用示例

    隊(duì)列只允許一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO的性質(zhì);隊(duì)列可用數(shù)組和鏈表 的方法實(shí)現(xiàn),使用鏈表的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些,因?yàn)槿绻褂脭?shù)組節(jié),出隊(duì)列時(shí)刪去首元素需要將整個(gè)數(shù)組前移,效率比較低
    2023-02-02
  • vs code 配置python虛擬環(huán)境的方法

    vs code 配置python虛擬環(huán)境的方法

    這篇文章主要介紹了vs code 配置python虛擬環(huán)境的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言二維數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲

    C語(yǔ)言二維數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言二維數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MFC控件之CListCtrl的應(yīng)用實(shí)例教程

    MFC控件之CListCtrl的應(yīng)用實(shí)例教程

    這篇文章主要介紹了MFC控件中CListCtrl的應(yīng)用方法,包括了針對(duì)表格的一些操作,是MFC中比較重要的一個(gè)控件類(lèi),需要的朋友可以參考下
    2014-08-08
  • 深入解析 C++中std::stoul 函數(shù)

    深入解析 C++中std::stoul 函數(shù)

    std::stoul是 C++ 標(biāo)準(zhǔn)庫(kù)中的一個(gè)字符串轉(zhuǎn)換函數(shù),它用于將?std::string?或?std::wstring?轉(zhuǎn)換為?unsigned long?類(lèi)型的整數(shù),下面就來(lái)介紹一下
    2025-04-04
  • C++?繼承的范例講解

    C++?繼承的范例講解

    繼承是C++面向?qū)ο缶幊讨械囊婚T(mén)。繼承是子類(lèi)繼承父類(lèi)的特征和行為,或者是繼承父類(lèi)得方法,使的子類(lèi)具有父類(lèi)得的特性和行為。重寫(xiě)是子類(lèi)對(duì)父類(lèi)的允許訪問(wèn)的方法實(shí)行的過(guò)程進(jìn)行重新編寫(xiě),返回值和形參都不能改變。就是對(duì)原本的父類(lèi)進(jìn)行重新編寫(xiě),但是外部接口不能被重寫(xiě)
    2022-06-06
  • C語(yǔ)言通過(guò)三步翻轉(zhuǎn)法實(shí)現(xiàn)單詞倒置詳解

    C語(yǔ)言通過(guò)三步翻轉(zhuǎn)法實(shí)現(xiàn)單詞倒置詳解

    這篇文章主要為大家分享了用三步翻轉(zhuǎn)法將一句話的單詞進(jìn)行倒置的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-05-05
  • C 語(yǔ)言中實(shí)現(xiàn)環(huán)形緩沖區(qū)

    C 語(yǔ)言中實(shí)現(xiàn)環(huán)形緩沖區(qū)

    本文主要是介紹 C語(yǔ)言實(shí)現(xiàn)環(huán)形緩沖區(qū),并附有詳細(xì)實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,希望能幫助有需要的小伙伴
    2016-07-07
  • 使用C++實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)連接池

    使用C++實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)連接池

    這篇文章主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)連接池,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2024-03-03

最新評(píng)論

福海县| 微山县| 安福县| 关岭| 和林格尔县| 洪湖市| 永宁县| 崇州市| 瓮安县| 南宁市| 沅江市| 萝北县| 平塘县| 屯留县| 房产| 孙吴县| 巴马| 忻州市| 浮山县| 徐汇区| 长阳| 平顺县| 西宁市| 清水县| 榆树市| 江华| 且末县| 神农架林区| 宣城市| 崇礼县| 兴安县| 灵丘县| 潜山县| 彰化市| 道孚县| 麦盖提县| 开江县| 寿宁县| 渝北区| 文水县| 霞浦县|