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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

揭秘继承技术之虚函数

發(fā)布時(shí)間:2023/12/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 揭秘继承技术之虚函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

虛函數(shù)

調(diào)用虛函數(shù)時(shí)函數(shù)行為將根據(jù)對(duì)象所屬類的不同而變化。

父類指針或引用指向子類對(duì)象時(shí),可訪問子類重寫方法( virtual函數(shù))但無(wú)法訪問在父類中沒有定義的子類方法和數(shù)據(jù)成員。

#include <iostream>using namespace std;class Super { public:Super(){}virtual void where(){cout<<"there is Super"<<endl;} };class Sub :public Super { public:Sub(){}virtual void where(){cout<<"there is Sub"<<endl;}void what(){cout<<"what?";} };int main() {Sub sub;Super* ptr = &sub;Super &ref = sub;sub.where();ptr->where();ref.where();return 0; }

運(yùn)行結(jié)果:

?

通過ptr和ref訪問的where()均為子類方法,無(wú)法訪問子類的what()方法。

?

所有析構(gòu)函數(shù)都應(yīng)該聲明為虛函數(shù)(至少祖先類的析構(gòu)函數(shù)應(yīng)聲明為virtual)

一個(gè)函數(shù)被聲明為virtual即使在它子類中沒有顯式的指出該函數(shù)依然是virtual。

如果父類的析構(gòu)函數(shù)沒有聲明為virtual,當(dāng)delete一個(gè)實(shí)際指向子類對(duì)象的父類指針時(shí),析構(gòu)函數(shù)調(diào)用鏈將被破壞。

#include <iostream>using namespace std;class Something { public:Something(){cout <<"1";}~Something(){cout<<"1";} };class Super : public Something { public:Super(){cout<<"2";}~Super(){cout<<"2";} };class Sub :public Super { public:Sub(){cout<<"3";}~Sub(){cout<<"3";} };int main() {Super* ptr = new Sub;delete ptr;return 0; }

運(yùn)行結(jié)果:

將Something的析構(gòu)函數(shù)聲明為virtual后,結(jié)果就為“123321”了。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/baiyideng/p/3601452.html

總結(jié)

以上是生活随笔為你收集整理的揭秘继承技术之虚函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。