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