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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ Primer 5th笔记(chap 18 大型程序工具)类型转换与多个基类

發布時間:2025/3/21 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 18 大型程序工具)类型转换与多个基类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 在只有一個基類的情況下, 派生類的指針或引用能自動轉換成一個可訪問基類的指針或引用。 我們可以令某個可訪問基類的指針或引用直接指向一個派生類對象。

eg. 一個ZooAnimal、 Bear 或 Endangered 類型的指針或引用可以綁定到 Panda 對象上

/ / 接受 Panda 的基類引用的一系列操作 void print(const Bears); void highlight(const Endangered& ); ostream& operator << (ostreamS, const ZooAnimals); Panda ying_yang("ying_yang"); print (ying_yang); //把一個 Panda 對象傳遞給一個 Bear 的引用 highlight (ying_yang); //把一個 Panda 對象傳遞給一個 Endangered 的引用 cout << ying_yang << endl; //把一個 Panda 對象傳遞給一個 ZooAnimal 的引用

編譯器不會在派生類向基類的幾種轉換中進行比較和選擇, 在它看來轉換到任意一種基類都一樣好

void print (const Bear & ); void print (const Endangered& ); Panda ying_yang ("ying_yang" ); print (ying_yang); // 二義性錯誤

1.1 基于指針類型或引用類型的查找

對象、 指針和引用的靜態類型決定了我們能夠使用哪些成員

Bear *pb = new Panda ("ying_yang" ) ; pb->print ( ); / / 正確: Panda::print ( ) pb->cuddle ( );/ / 錯誤: 不屬于 Bear 的接口 pb->highlight ( );/ / 錯誤:不屬于 Bear 的接口 delete pb;/ / 正確: Panda::~Panda ( )

eg. 當我們通過 Endangered 的指針或引用訪問一個 Panda 對象時, Panda 接口中Panda 特有的部分以及屬于 Bear 的部分都是不可見的:

Endangered *pe = new Panda ("ying_yang" ); pe->print ( );// 正確: Panda::print ( ) pe->toes ( );/ / 錯誤: 不屬于 Endangered 的接口 pe->cuddle ( ) ;/ / 錯誤: 不屬于 Endangered 的接口 pe->highlight ( );/ / 正確: Panda::highlight ( ) delete pe; 函數含有自定義版本的類
printZooAnimal::ZooAnimal ; Bear::Bear ; Endangered::Endangered; Panda::Panda
highlightEndangered::Endangered ; Panda::Panda
toesBear::Bear; Panda::Panda
cuddlePanda::Panda
析構函數ZooAnimal::ZooAnimal ; Endangered::Endangered

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 18 大型程序工具)类型转换与多个基类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。