日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 15 OOP)继承之派生类

發(fā)布時間:2025/3/21 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 15 OOP)继承之派生类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 構(gòu)造函數(shù)

每個類控制它自己的成員初始化過程:盡管派生類包含了從基類繼承而來的成員,但是派生類不能直接初始化這些成員,而是需要使用基類的構(gòu)造函數(shù)來初始化它們。

  • 派生類對象的基類部分與派生類對象自己的數(shù)據(jù)成員都是在構(gòu)造函數(shù)的初始化階段執(zhí)行初始化操作
  • 首先會初始化基類的部分,然后按照聲明的順序依次初始化派生類的成員
    eg.
Bulk_quote(const std::string& book,double p,std::size_t qty,double disc) : quote(book,p),min_qty(qty),discount(disc){}
  • 首先會初始化基類的部分,然后按照聲明的順序依次初始化派生類的成員。

2. 靜態(tài)成員

如果基類定義了一個靜態(tài)成員,則在整個繼承體系中只存在該成員的唯一定義,無論從基類中派生出來多少個派生類,對于每個靜態(tài)成員來說都只存在唯一的實例。

2.1訪問控制規(guī)則

靜態(tài)成員遵循通用的訪問控制規(guī)則。如果某個靜態(tài)成員是可以訪問的,那么既可以通過基類也可以通過派生類使用它。

3. 派生類的聲明

派生類的聲明包含類名但是不包含它的派生列表:

class Bulk_quote : public Quote; // 錯誤,派生類列表不能出現(xiàn)在這里 class Bulk_quote; // 正確,聲明派生類的正確方式

4. 被用作基類的類

如果想使用某個類作為基類,則該類必須是已經(jīng)定義而非僅僅聲明:主要是構(gòu)造函數(shù)和成員變量必須定義,因為子類的構(gòu)造函數(shù)必須使用父類的構(gòu)造函數(shù)。

class Quote; // 聲明,但未定義 class Bulk_quote : public Quote {...}; // 錯誤,Quote必須先被定義
  • 派生類中包含并且可以使用它從基類繼承而來的成員,為了使用這些成員,派生類當然要先知道它們是什么,因此規(guī)定還有一層隱含的意思,即一個類不能派生它本身。
  • c++中類,是在實例化時才會查找相關(guān)代碼,沒有使用就不會生成對應代碼,函數(shù)無論使用都會生成。類會自動生成一個namespace,其中的靜態(tài)成員和靜態(tài)變量,相當于namespace中的變量和函數(shù)。

5.防止繼承的發(fā)生

如果想定義一個類并且不希望從它派生出新的類,可以禁止繼承的方式,C++ 11 新標準中在類名后面緊跟一個關(guān)鍵字 final 即可實現(xiàn):

class NoDerived final{/*...*/}; // NoDerived 不能作為基類

總結(jié)

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 15 OOP)继承之派生类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。