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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ 学习之旅(16)——虚函数与纯虚函数virtual

發布時間:2023/12/4 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 学习之旅(16)——虚函数与纯虚函数virtual 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于虛函數的概念講解,可以看這篇文章:

https://blog.csdn.net/siwuxie095/article/details/71159414

以下用例子進行實際說明:

#include <iostream> using namespace std;class Shape { public:int width, height;Shape(int a = 0, int b = 0){width = a;height = b;}void area(){cout << "Parent class has no area" << endl;} };class Rectangle : public Shape { public:Rectangle(int a = 0, int b = 0) :Shape(a, b) { }void area(){cout << "Rectangle class area :" << width * height << endl;} };class Triangle : public Shape { public:Triangle(int a = 0, int b = 0) :Shape(a, b) { }void area(){cout << "Triangle class area :" << width * height / 2 << endl;} };int main() {Shape* sha1 = new Shape(10, 5);Rectangle* rec = new Rectangle(10, 5);Triangle* tri = new Triangle(10, 5);sha1->area();rec->area();tri->area();cin.get();return 0; }

我們有形狀類Shape,它有兩個子類:Rectangle矩形類和Triangle三角形類。

利用多態的思想,我們希望在對不同對象下達相同指令(計算面積)的時候,不同對象可以根據自身情況完成該指令。即如果是Shape類則沒有面積,而矩形和三角形各自都有計算面積的公式,以上代碼看似是可以實現的,運行結果如下:


但是,這種情況實際上只是根據實例化時所屬的類選擇不同的area方法,屬于靜態多態,如果出現以下情況:

Shape* sha2 = rec; sha2->area();

輸出卻為:“Parent class has no area”

明明sha2指向的地址是矩形類的地址,但是卻因為實例化時用了Shape類,而導致無法正確計算面積,此時就有必要引入動態多態了。只需在Shape類中的area函數前加上virtual關鍵字即可:

#include <iostream> using namespace std;class Shape { public:int width, height;Shape(int a = 0, int b = 0){width = a;height = b;}virtual void area(){cout << "Parent class has no area" << endl;} };class Rectangle : public Shape { public:Rectangle(int a = 0, int b = 0) :Shape(a, b) { }void area(){cout << "Rectangle class area :" << width * height << endl;} };class Triangle : public Shape { public:Triangle(int a = 0, int b = 0) :Shape(a, b) { }void area(){cout << "Triangle class area :" << width * height / 2 << endl;} };int main() {Shape* sha1 = new Shape(10, 5);Rectangle* rec = new Rectangle(10, 5);Triangle* tri = new Triangle(10, 5);sha1->area();rec->area();tri->area();Shape* sha2 = rec;sha2->area();cin.get();return 0; }

輸出結果如下:


而如果我們在基類中不能對虛函數給出有意義的實現,這個時候就會用到純虛函數。只需把函數體改為= 0即可:

#include <iostream> using namespace std;class Shape { public:int width, height;Shape(int a = 0, int b = 0){width = a;height = b;}virtual void area() = 0; };class Rectangle : public Shape { public:Rectangle(int a = 0, int b = 0) :Shape(a, b) { }void area(){cout << "Rectangle class area :" << width * height << endl;} };class Triangle : public Shape { public:Triangle(int a = 0, int b = 0) :Shape(a, b) { }void area(){cout << "Triangle class area :" << width * height / 2 << endl;} };int main() {Rectangle* rec = new Rectangle(10, 5);Triangle* tri = new Triangle(10, 5);rec->area();tri->area();Shape* sha2 = rec;sha2->area();cin.get();return 0; }

注意此時我們無法實例化Shape類,因為它已經變成了抽象類,是作為一種規范,或者說接口而存在的?;愔卸x了純虛函數,子類必須對它進行定義,否則也是無法實例化的。

輸出結果如下:

總結

以上是生活随笔為你收集整理的C++ 学习之旅(16)——虚函数与纯虚函数virtual的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久一精品 | v片在线免费观看 | 国产原创剧情av | 国产精品视频一区二区在线观看 | 国产激情av一区二区三区 | 精品啪啪 | 欧美伊人久久 | 国产女人精品 | 97人人射 | 免费在线观看黄色片 | 国产亚洲一区在线 | 91偷拍精品一区二区三区 | 丝袜一区二区三区 | 91免费版在线看 | av成人在线免费观看 | 成年人视频在线观看免费 | 日本在线一区二区 | 日本熟妇一区二区三区 | 亚洲成人婷婷 | 99热这里只有精品1 亚洲人交配视频 | 精品影视一区二区 | www国产精品 | 一级特黄aa大片免费播放 | 狠狠干狠狠干狠狠干 | 亚色一区 | 麻豆免费电影 | 亚洲中文字幕无码av永久 | 婷婷在线免费观看 | 精品区在线观看 | 麻豆国产精品一区 | 亚洲小说在线 | 久久久123| 又大又粗又爽18禁免费看 | 国产精品精品 | 九七影院在线观看免费观看电视 | 91国偷自产一区二区三区老熟女 | 成年人性生活免费视频 | 午夜资源站 | 九月婷婷| 欧美三日本三级少妇三级99观看视频 | 久久久精品综合 | 九九日韩| 黄av资源| 国产一区二区黄 | 大奶一区| 中文字幕人妻丝袜乱一区三区 | 天天干夜夜嗨 | 1024福利| 久久久久久久久久久久电影 | 天天干,天天操 | 久综合网 | 日韩在线免费视频观看 | 咪咪色图 | 精品韩国一区二区三区 | 亚洲精品乱码久久久久久不卡 | 久久国产精品网 | 国产aaa级片 | 久久伊人亚洲 | 黑人满足娇妻6699xx | 成人福利在线播放 | 日本人妖xxxx | 伊人久久伊人 | 天堂网中文 | 一区二区成人精品 | 天天干夜夜草 | aaa国产精品 | 91九色视频在线 | 欧美一区二区三区在线免费观看 | 香蕉传媒| 国产精品久久久久久久久绿色 | 99av视频 | 18av在线视频| 户外露出一区二区三区 | 日本久久久久 | 亚洲精品在线一区二区 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 青青青青青操 | 国产精品第8页 | 美女a视频| 欧美日韩精品免费 | www黄色片网站| 免费观看理伦片在线播放视频软件 | 丰满熟女人妻一区二区三 | 久久久精品国产免费爽爽爽 | 8x8ⅹ国产精品一区二区 | 日韩性大片 | 粉嫩av网址 | 亚洲美女久久 | 亚洲第七页 | 91网在线播放 | 高清国产午夜精品久久久久久 | 欧美激情午夜 | av中文网 | 欧美乱妇一区二区三区 | 午夜激情成人 | 久久成人av | 一区二区三区四区五区六区 | 欧美中文字幕在线视频 | 成人动漫亚洲 |