C++ Primer 5th笔记(chap 15 OOP)继承之派生类
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 15 OOP)继承之派生类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 構造函數
每個類控制它自己的成員初始化過程:盡管派生類包含了從基類繼承而來的成員,但是派生類不能直接初始化這些成員,而是需要使用基類的構造函數來初始化它們。
- 派生類對象的基類部分與派生類對象自己的數據成員都是在構造函數的初始化階段執行初始化操作
- 首先會初始化基類的部分,然后按照聲明的順序依次初始化派生類的成員
eg.
- 首先會初始化基類的部分,然后按照聲明的順序依次初始化派生類的成員。
2. 靜態成員
如果基類定義了一個靜態成員,則在整個繼承體系中只存在該成員的唯一定義,無論從基類中派生出來多少個派生類,對于每個靜態成員來說都只存在唯一的實例。
2.1訪問控制規則
靜態成員遵循通用的訪問控制規則。如果某個靜態成員是可以訪問的,那么既可以通過基類也可以通過派生類使用它。
3. 派生類的聲明
派生類的聲明包含類名但是不包含它的派生列表:
class Bulk_quote : public Quote; // 錯誤,派生類列表不能出現在這里 class Bulk_quote; // 正確,聲明派生類的正確方式4. 被用作基類的類
如果想使用某個類作為基類,則該類必須是已經定義而非僅僅聲明:主要是構造函數和成員變量必須定義,因為子類的構造函數必須使用父類的構造函數。
class Quote; // 聲明,但未定義 class Bulk_quote : public Quote {...}; // 錯誤,Quote必須先被定義- 派生類中包含并且可以使用它從基類繼承而來的成員,為了使用這些成員,派生類當然要先知道它們是什么,因此規定還有一層隱含的意思,即一個類不能派生它本身。
- c++中類,是在實例化時才會查找相關代碼,沒有使用就不會生成對應代碼,函數無論使用都會生成。類會自動生成一個namespace,其中的靜態成員和靜態變量,相當于namespace中的變量和函數。
5.防止繼承的發生
如果想定義一個類并且不希望從它派生出新的類,可以禁止繼承的方式,C++ 11 新標準中在類名后面緊跟一個關鍵字 final 即可實現:
class NoDerived final{/*...*/}; // NoDerived 不能作為基類總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 15 OOP)继承之派生类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha