C++ Primer 5th笔记(chap 15 OOP)继承之类型转换
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 15 OOP)继承之类型转换
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 派生類->基類(編譯器隱式執(zhí)行)
1.1 將基類的指針或引用綁定到派生類的對象上:當(dāng)使用基類的引用或指針時,實際上我們并不清楚該引用或指針?biāo)壎▽ο蟮恼鎸嶎愋汀T搶ο罂赡苁腔惖膶ο?#xff0c;也可能是派生類的對象。
Quote item; // 基類對象 Bulk_quote bulk; // 派生類對象 Quote *p = &item; // p指向基類 Quote 對象 p = &bulk; // p指向派生類 Bulk_quote 對象的基類部分 Quote &r = bulk; // r綁定到派生類 Bulk_quote 對象的基類部分1.2. 派生類對象中含有與其基類對應(yīng)的組成部分,所以能把派生類的對象當(dāng)成基類對象使用
//當(dāng)我們初始化或賦值一個類類型的對象時,實際上是調(diào)用構(gòu)造函數(shù)或賦值運算符 Bulk_quote bulk; Quote item(bulk) ; //調(diào)用Qutoe的構(gòu)造函數(shù) item = bulk; //調(diào)用Qutoe的operator=切割sliced down:當(dāng)我們用一個派生類對象為一個基類對象初始化或賦值時,只有該派生類對象中的基類部分會被拷貝、移動或賦值,它的派生類部分將被忽略掉。
- 和任何其他成員一樣,派生類向基類的類型轉(zhuǎn)換也可能會由于訪問受限而變得不可行。
- 智能指針也支持派生類向基類的類型轉(zhuǎn)換
2. 基類->派生類
不存在基類對象向派生類對象的隱式類型轉(zhuǎn)換,但是當(dāng)編譯器無法確定某個特定的轉(zhuǎn)換在運行時是否安全的時候,則可以,但這是很危險的
Bulk_quote bulk; Bulk_quote *bulkP=itemP; //錯誤,不能將基類轉(zhuǎn)換成派生類如果在基類中含有一個或多個虛函數(shù),可以使用 dynamic_cast 來請求一個類型轉(zhuǎn)換,該轉(zhuǎn)換的安全檢查將在運行時執(zhí)行,同樣。如果已知某個基類向派生類轉(zhuǎn)換是安全的,則可以使用 static_cast 來強制覆蓋掉編譯器的檢查工作。
【引用】
[1] 代碼oopTest.h
總結(jié)
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 15 OOP)继承之类型转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha