亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中基類和派生類之間的轉(zhuǎn)換實例教程

2020-05-23 14:21:53
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C++中基類和派生類之間的轉(zhuǎn)換,有助于深入理解C++面向?qū)ο蟪绦蛟O(shè)計,需要的朋友可以參考下
 
 

本文實例講解了C++中基類和派生類之間的轉(zhuǎn)換。對于深入理解C++面向?qū)ο蟪绦蛟O(shè)計有一定的幫助作用。此處需要注意:本文實例講解內(nèi)容的前提是派生類繼承基類的方式是公有繼承,關(guān)鍵字public。具體分析如下:

以下程序為講解示例:

#include<iostream>using namespace std;class A{public:  A(int m1, int n1):m(m1), n(n1){}  void display();private:  int m;  int n;};void A::display(){  cout << "m = " << m << endl;  cout << "n = " << n << endl;}class B :public A{public:  B(int m1, int n1, int p1) :A(m1, n1), p(p1){}  void display();private:  int p;};void B::display(){  A::display();  cout << "p = " << p << endl;}void print1(A& a){  a.display();}void print2(B& b){  b.display();}void print3(A a){  a.display();}void print4(B b){  b.display();}int main(){  A a(3, 4);//  a.display();  B b(10, 20, 30);//  b.display();  A * pa;  B * pb;  pa = &a;//  pa->display();  pb = &b;//  pb->display();//  pa = &b;//  pa->display();//  pb = &a;       //錯誤。派生類指針不能指向基類對象。//  print1(b);//  print2(a);      //錯誤。不能用基類對象給派生類引用賦值。//  print3(b);//  print4(a);      //錯誤。不能用基類對象給派生類對象賦值。//  pb = pa;       //不能用基類指針給派生類指針賦值。  pb = (B*)pa;     //可以強制轉(zhuǎn)換,但是非常不安全。  pb->display();    //出現(xiàn)安全問題,p無法訪問,因為a中沒有p成員  system("pause");  return 0;}

切記:派生類對象是基類對象,派生類中包含有基類的成員?;悓ο蟛皇桥缮悓ο螅荒馨缮愋偷某蓡T。

一、派生類到基類的轉(zhuǎn)化

1.派生類對象地址賦值給基類指針

main函數(shù)中執(zhí)行以下代碼

A a(3, 4);//  a.display();  B b(10, 20, 30);//  b.display();  A * pa;//  B * pb;//  pa = &a;//  pa->display();//  pb = &b;//  pb->display();  pa = &b;  pa->display();     //會輸出 10 20

pa為基類指針,指向派生類對象是合法的,因為派生類對象也是基類對象。語句會輸出派生類對象中基類部分。

注意:這里并不會調(diào)用派生類的display函數(shù),調(diào)用的是基類的display函數(shù),因為指針pa是基類指針,編譯器在編譯階段只知道pa的類型。如果要實現(xiàn)調(diào)用派生類的display函數(shù),需要用到虛函數(shù)實現(xiàn)多態(tài)性。之后的文章會講到。

進一步解釋一下編譯時和運行時的區(qū)別。

編譯時編譯器能知道pa的類型為A *,但是不知道它指向了哪個對象,假如有以下語句

A a(3, 4);B b(10, 20, 30);A* pa;int number;cin >> number;if (number >= 0)  pa = &a;else  pa = &b;

pa指向的對象類型依賴于輸入,運行時才輸入,所以編譯器是沒有辦法知道pa指向哪個類型的。

2.派生類對象賦值給基類引用

引用跟指針基本沒有區(qū)別,引用本質(zhì)上是指針,是個指針常量,具體可以參照我的另一篇C++中的引用和指針的聯(lián)系和區(qū)別

main函數(shù)中執(zhí)行以下代碼

A a(3, 4);B b(10, 20, 30);print1(b);      //會輸出 10 20

形參為基類引用,實參為派生類對象,派生類對象也是基類對象,可以賦值給基類引用。輸出派生類中基類部分。

注意:此時對象本身并未復(fù)制,b仍然是派生類對象,前面說過了引用就是一個指針。

3.派生類對象賦值給基類對象。

A a(3, 4);B b(10, 20, 30);print3(b);

派生類對象基類部分被復(fù)制給形參。

注意:實際上沒有從派生類對象到基類對象的直接轉(zhuǎn)換。對基類對象的賦值或初始化,實際上在調(diào)用函數(shù),初始化時調(diào)用構(gòu)造函數(shù),賦值時調(diào)用賦值操作符。

二、基類到派生類的轉(zhuǎn)化

切記:這種轉(zhuǎn)換有可能引發(fā)嚴重的安全問題,編寫代碼時不要使用。沒有基類到派生類的自動轉(zhuǎn)換,原因在于基類對象只能是基類對象,不能包含派生類型的成員。

如果允許用基類對象給派生類對象賦值,那么就可以試圖使用該派生類對象訪問不存在的成員。

A a(3, 4);B b(10, 20, 30);A * pa;B * pb;//  print2(a);      //錯誤。不能用基類對象給派生類引用賦值。//  print4(a);      //錯誤。不能用基類對象給派生類對象賦值。//  pb = &a;       //錯誤。派生類指針不能指向基類對象。pa = &a;pb = &b;//pb = pa;           //錯誤。不能用基類指針給派生類指針賦值。pb = (B*)pa;     //可以強制轉(zhuǎn)換,但是非常不安全。pb->display();    //出現(xiàn)安全問題,p無法訪問,因為a中沒有p成員

注意到我們使用強制轉(zhuǎn)換時,當(dāng)派生類添加了基類中不存在的成員時,會出現(xiàn)安全問題。

pb->display();會調(diào)用派生類的display函數(shù),但是它指向的內(nèi)存是基類對象a的內(nèi)存,p不存在。會出現(xiàn)嚴重后果。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欲香欲色天天天综合和网| 色天堂在线视频| 中文字幕亚洲在线| 欧美在线观看黄| 国产精品日韩精品中文字幕| 亚洲 欧美 日韩 综合| 91在线亚洲| 国产精品一香蕉国产线看观看| 国产freexxxx性播放麻豆| 性色av一区二区怡红| 日本免费网站在线观看| 91国内在线| 日韩中文av在线| 亚洲成人在线免费| av片在线观看免费| 久久久久女教师免费一区| av小次郎收藏| 久久精品欧美一区| 波多野结衣三级在线| 国产日韩欧美不卡| 2019中文字幕在线免费观看| 91精品人妻一区二区| 色妞ww精品视频7777| 欧美残忍xxxx极端| 国产剧情一区在线| 色橹橹欧美在线观看视频高清| 羞羞的视频免费| 亚洲国产精品久久精品怡红院| 热久久免费国产视频| 日韩av在线免费播放| 久久精品视频亚洲| 国内综合精品午夜久久资源| 欧洲精品乱码久久久久蜜桃| 又黄又爽的视频在线观看| 亚洲人成网站在线播放2019| 国产亚av手机在线观看| 日韩一区二区久久| 欧美bbbbxxxx| 成人午夜av| 亚洲欧美日韩国产成人| 国内毛片毛片毛片毛片毛片| 日韩中文字幕不卡视频| 日韩精品中文字幕一区| 51自拍视频在线观看| 成人免费视频免费观看| 高清国产福利在线观看| 小毛片在线观看| 亚洲大胆在线| 精品无码m3u8在线观看| www.4hu95.com四虎| 在线成人视屏| 91麻豆精品国产91久久久资源速度| 精品国产乱码一区二区三| 最新91在线视频| 欧美人妖巨大在线| 高清一级毛片视频| 麻豆精品视频入口| 青青草精品在线| 香蕉视频在线网站| 一区视频免费观看| 一级片免费在线| 在线中文字幕不卡| 97品白浆高清久久久久久| 亚洲人成欧美中文字幕| 欧美精品xxxxx| 成年人国产精品| 国产剧情在线观看一区二区| 久久久久无码国产精品| 免费看污视频的网站| 久久久久久久麻豆| 中文日产幕无线码一区二区| √最新版天堂资源网在线| 91p在线观看| 精品系列免费在线观看| 久久综合免费视频| 久久久久久国产精品久久| www午夜视频| 天天色天天草| 亚洲女同在线| 成人毛片视频在线观看| 国产亚洲成av人片在线观黄桃| av成人手机在线| 成人午夜剧场免费观看完整版| 亚洲第一综合色| 欧美精品欧美精品系列| 亚洲精品中文字幕女同| 久久99精品久久久久| 国产精品538一区二区在线| 亚洲美女视频一区| 手机免费看av网站| 中日韩精品一区二区三区| 丁香五六月婷婷久久激情| 我要看一级黄色大片| 要久久电视剧全集免费| 亚洲av无码一区二区三区在线| 亚洲国产欧美一区二区三区丁香婷| 国产主播在线看| 国产欧美日韩一级| av网站在线免费看| 国产一区二区三区不卡免费观看| 欧美lavv| 一级毛片aaaaaa免费看| 日韩视频精品| 青青草视频在线观看| 国产精品极品国产中出| 一区二区国产视频| 亚洲黄色影院| 国产免费福利视频| 亚洲精品天堂在线| 免费日本视频一区| 亚洲愉拍自拍另类高清精品| 一级黄色录像视频| 麻豆91在线观看| 国产免费一区二区三区在线能观看| 911精品产国品一二三产区| 国产精品一区二区三区毛片淫片| 狠狠色综合久久婷婷| 欧美高清视频手机在在线| 国产精品久久视频| 亚洲国产成人精品综合99| 免费一级欧美在线大片| 久久中文字幕av| 伊人久久中文字幕| 91精品国产调教在线观看| 国产另类自拍| 亚洲欧美精品久久| 黄色成人av在线| 国产福利在线观看视频| 欧美日韩成人在线一区| 国产777精品精品热热热一区二区| 欧美sss在线视频| 91精品久久久久久久久久久久久久| 黑鬼狂亚洲人videos| 91在线看网站| 国语对白中文字幕| 国产精品久久久久久久天堂| 黄色成人在线播放| 欧洲成人免费视频| 凹凸日日摸日日碰夜夜爽1| 日本美女视频一区二区| 亚洲免费观看在线视频| 亚洲视频axxx| 99国产精品久久久久99打野战| 亚洲美女在线观看| 欧美成人一区二区三区四区| 久久精品国产综合精品| 欧美精品www在线观看| 亚洲综合av在线播放| 亚洲人成在线观看一区二区| 久久久噜噜噜久久狠狠50岁| 亚洲国产欧美一区二区三区丁香婷| 国产精品一区二区久久不卡| 色久视频在线播放| 日本韩国欧美三级| 老司机久久精品| 免费看精品久久片| 欧美人与动性xxxxbbbb| 国产精品综合在线视频| 中文字幕高清在线观看| 国产高潮又爽又无遮挡又免费| 亚洲高清视频的网址| 97视频免费在线观看| 欧美福利视频在线| 国产在线69| 香蕉国产成人午夜av影院| 一区二区免费播放| 精品视频9999| 久久精品免费| xxx一区二区| 九九热爱视频精品视频高清| 美女精品网站| av影片在线看| 欧美国产高清| 欧美精品一级片| 亚洲国产高清高潮精品美女| 国产精品久久国产精品99gif| 国产原创一区二区三区| 新版的欧美在线视频| 西西44rtwww国产精品| 亚洲三级在线观看| 国产婷婷色一区二区在线观看| 青青在线观看视频中文字| **欧美大码日韩| jizzjizz少妇亚洲水多| 国产美女娇喘av呻吟久久| 99在线首页视频| 影音先锋一区| 久久在精品线影院精品国产| 欧美日韩中文另类| 亚洲啊v在线免费视频| 精品无码av一区二区三区不卡| 亚洲一区二区三区视频播放| 久久久久久久黄色| 久久综合色影院| 亚洲av成人精品一区二区三区在线播放| 欧美性猛交xxxx乱大交蜜桃| 粉嫩的18在线观看极品精品| 国模冰冰炮一区二区| 91精品国产综合久久香蕉最新版| 国产乱码精品一区二三区蜜臂| 四虎影院一区二区三区| 亚洲精品不卡在线| 精品人妻一区二区三区三区四区| 国产麻豆欧美日韩一区| 日韩高清一级片| 大伊人狠狠躁夜夜躁av一区| 欧洲亚洲精品视频| 91精品久久香蕉国产线看观看| 欧美日韩综合一区二区三区| 亚洲欧美另类图片| a∨色狠狠一区二区三区| 欧美在线观看视频在线| 久久亚洲综合网| 国产欧美一区二区三区沐欲| 亚洲欧美日本在线观看| av综合在线观看| 天堂av手机在线| 麻豆91精品91久久久| 日日夜夜亚洲精品| 国产亚洲一区精品| 日韩一区在线播放| 99国产精品久久久久久久| 亚洲va国产日韩欧美精品色婷婷| 欧美又粗又长又爽做受| 国产精品一久久香蕉国产线看观看| 艳妇荡乳欲伦69影片| 福利视频一区二区三区四区| 欧美 日韩 国产 一区二区三区| 97人人精品| 久久国产精彩视频| 成人免费观看网站| 成人网中文字幕| av在线二区| 欧美偷拍一区二区三区| 国产精自产拍久久久久久蜜| 中文字幕 日本| 中文字幕av网址| 老牛影视一区二区三区| 成人自拍偷拍| av女同在线| av在线亚洲男人的天堂| 国产综合久久久久久久久久久久| 日韩欧美另类在线| 久久久综合久久| 日韩伦人妻无码| 国产欧美日韩| 丝袜亚洲精品中文字幕一区| 国产91在线播放九色快色| 九九久久久2| 一区二区在线视频播放| 欧美午夜精品伦理| 亚洲永久免费av| 国产欧美综合一区二区三区| av电影在线观看| 99久久.com| 成人做爰视频网站| 天天做天天爱天天综合网2021| 成年人深夜视频| 九九热在线观看视频| 国产无遮挡一区二区三区毛片日本| a看欧美黄色女同性恋| 亚洲精品视频区| 国产美女在线精品免费观看| 日韩理论在线| 色在线观看视频| 最近2019年日本中文免费字幕| 中文字幕视频一区二区| 91精品国产综合久久精品app| 91麻豆成人精品国产免费网站| 亚洲第一偷拍| 中文字幕第一区综合| 99在线精品视频免费观看20| 成人av网站在线| 在线观看av网页| 欧美三级一区| 99c视频在线| 国产福利电影网| 九色综合婷婷综合| 日韩免费中文字幕| 欧美极品aⅴ影院| 天堂资源在线亚洲视频| 91精品国产自产在线观看永久| 国产对白叫床清晰在线播放| 91亚洲永久免费精品| 免费在线视频观看| 一本大道久久a久久综合| 欧美日韩国产123| 日韩写真福利视频在线| 国产一级特黄a高潮片| 国产在线2020| 国产一级不卡毛片| 亚洲午夜国产成人av电影男同| 欧美日韩亚洲天堂| 精品国产乱码久久久久久虫虫漫画| 在线观看你懂的视频| 亚洲国产精彩中文乱码av在线播放| 91在线在线观看| 九色综合国产一区二区三区| 欧美美女一级片| 亚洲a在线播放| 亚洲精品喷潮一区二区三区| 欧美国产先锋| 日韩精品一区二区三区丰满| 欧美精品一区二区三区久久| 国产精品天天操| 亚洲国产精品123| 在线播放91灌醉迷j高跟美女| 欧美综合视频| 天美星空大象mv在线观看视频| 亚洲欧美国产一区二区三区| 国产农村老头老太视频| 在线看片你懂的| 欧美另类极品videosbest视频| 最近中文字幕av| www.日本不卡| 成人情视频高清免费观看电影| 精品久久久久久中文字幕一区奶水| 国产三级三级在线观看| 三级在线观看一区二区| 成人免费网站视频| 日韩激情网站| 交视频在线观看国产| 激情都市一区二区| 欧美激情论坛| 日日夜夜一区| 国产69精品久久久久9| 免费一级黄色大片| 欧美日韩电影在线观看|