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

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

C++教程:C++虛函數與虛析構函數

2020-05-23 14:25:22
字體:
來源:轉載
供稿:網友
在類中,有兩個與眾不同的成員函數,那就是構造函數和析構函數。當構造函數與析構函數遭遇繼承和多態,它們的運行狀況又會出現什么變化呢?

多態性是在父類或各子類中執行最合適成員函數。一般來說,只會選擇父類或子類中的某一個成員函數來執行。這可給析構函數帶來了麻煩!如果有的資源是父類的構造函數申請的,有的資源是子類的構造函數申請的,而虛函數只允許程序執行父類或子類中的某一個析構函數,豈不是注定有一部分資源將無法被釋放?為了解決這個問題,虛析構函數變得與眾不同。

下面我們就來給析構函數的前面加上保留字virtual,看看運行的結果會怎么樣:(程序17.8)
//animal.h
#include <iostream>
using namespace std;
class Animal
{
   public:
   Animal(int w=0,int a=0);
   virtual ~Animal();//虛析構函數
   protected:
   int weight,age;
};
Animal::Animal(int w,int a)
{
   cout <<"Animal consturctor is running..." <<endl;
   weight=w;
   age=a;
}
Animal::~Animal()
{
   cout <<"Animal destructor is running..." <<endl;
}
//cat.h
#include "animal.h"
class Cat:public Animal
{
   public:
   Cat(int w=0,int a=0);
   ~Cat();
};
Cat::Cat(int w,int a):Animal(w,a)
{
      cout <<"Cat constructor is running..." <<endl;
}
Cat::~Cat()
{
   cout <<"Cat destructor is running..." <<endl;
}
//main.cpp
#include "cat.h"
int main()
{
   Animal *pa=new Cat(2,1);
   Cat *pc=new Cat(2,4);
   cout <<"Delete pa:" <<endl;
   delete pa;
   cout <<"Delete pc:" <<endl;
   delete pc;
   return 0;
}

運行結果:
Animal consturctor is running...
Cat constructor is running...
Animal consturctor is running...
Cat constructor is running...
Delete pa:
Cat destructor is running...
Animal destructor is running...
Delete pc:
Cat destructor is running...
Animal destructor is running...

我們驚訝地發現,虛析構函數不再是運行父類或子類的某一個析構函數,而是先運行合適的子類析構函數,再運行父類析構函數。即兩個類的析構函數都被執行了,如果兩塊資源分別是由父類構造函數和子類構造函數申請的,那么使用了虛析構函數之后,兩塊資源都能被及時釋放。

我們修改程序17.8,將Animal類析構函數前的virtual去掉,會發現運行結果中刪除pa指向的Cat對象時,不執行Cat類的析構函數。如果這時Cat類的構造函數里申請了內存資源,就會造成內存泄漏了。

所以說,虛函數與虛析構函數的作用是不同的。虛函數是為了實現多態,而虛析構函數是為了同時運行父類和子類的析構函數,使資源得以釋放。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品视频在线观看| 在线观看欧美www| 成人精品久久久| 亚洲欧美自拍一区| 欧美午夜片欧美片在线观看| 亚洲xxx视频| 国产亚洲精品久久久久动| 欧美大片在线免费观看| 国产精品99久久久久久白浆小说| 在线播放国产一区二区三区| 欧美大片在线免费观看| 91超碰caoporn97人人| 精品爽片免费看久久| 国产69久久精品成人| 欧美亚洲午夜视频在线观看| 欧美巨大黑人极品精男| 这里只有精品在线观看| 久久躁日日躁aaaaxxxx| 国产精品久久久一区| 成人网欧美在线视频| 国产亚洲欧美日韩美女| 91精品国产一区| 国产一区二区在线免费| 福利二区91精品bt7086| 亚洲爱爱爱爱爱| 韩国一区二区电影| 久久久视频免费观看| 伊人久久男人天堂| 亚洲自拍偷拍在线| 久久精品91久久香蕉加勒比| 亚洲国产成人爱av在线播放| 国产一区二区日韩| 黑人巨大精品欧美一区免费视频| 日韩电影免费观看在线| 欧美性受xxxx黑人猛交| 日韩影视在线观看| 亚洲国产另类 国产精品国产免费| 日韩美女免费视频| 亚洲香蕉成视频在线观看| 欧美体内谢she精2性欧美| 亚洲jizzjizz日本少妇| 在线激情影院一区| 成人午夜在线影院| 欧美色视频日本高清在线观看| 91精品国产91久久久久久最新| 国语自产偷拍精品视频偷| 91精品久久久久久久久久另类| 久热精品视频在线免费观看| 亚洲自拍另类欧美丝袜| 亚洲国内高清视频| 亚洲精品久久久久中文字幕二区| 国产91精品青草社区| 久久天堂av综合合色| 成人午夜在线视频一区| 亚洲999一在线观看www| 亚洲无亚洲人成网站77777| 日韩性生活视频| 国产精品国产三级国产aⅴ9色| 国产精品永久免费| 久久精品视频中文字幕| 久久久久久国产免费| 中文字幕精品影院| 九九视频这里只有精品| 最新国产精品亚洲| 91禁国产网站| 91精品久久久久久久久不口人| 国产综合久久久久| 久久影视电视剧免费网站| 日本伊人精品一区二区三区介绍| 欧美日韩亚洲一区二区| 国产精品男人的天堂| 中文字幕少妇一区二区三区| 亚洲国产97在线精品一区| 欧美日韩精品中文字幕| 亚洲视频在线免费看| 97精品国产97久久久久久春色| 九九精品视频在线观看| 亚洲天堂av在线免费| 超碰日本道色综合久久综合| 国产日韩欧美夫妻视频在线观看| 亚洲欧美精品一区二区| 日本精品性网站在线观看| 国产亚洲精品久久久久久| 久久成人免费视频| 国产精品日韩专区| 欧美激情免费观看| 欧美黑人性猛交| 精品动漫一区二区| 亚洲跨种族黑人xxx| 欧美电影免费在线观看| 中文欧美在线视频| 欧美成人亚洲成人| 亚洲国产日韩欧美在线图片| 欧美不卡视频一区发布| 国产一区二区久久精品| 日韩中文字幕在线| 91人人爽人人爽人人精88v| 95av在线视频| 97福利一区二区| 久久久噜噜噜久久中文字免| 国产精品综合不卡av| 国产精品久久久久久久av大片| 欧美中文字幕在线播放| 久久免费视频网| 久久久国产精品免费| 久久最新资源网| 国产精品激情av电影在线观看| 国产综合香蕉五月婷在线| 欧美性极品xxxx娇小| 国产成人精品综合久久久| 91久久久久久国产精品| 国产精品永久在线| 久久久久这里只有精品| 欧美成人精品一区二区三区| 综合网中文字幕| 亚洲乱码av中文一区二区| 日韩激情av在线免费观看| 日韩精品免费在线视频| 日韩免费精品视频| 亚洲欧美日韩在线高清直播| 亚洲国产精品成人av| 国产精品偷伦视频免费观看国产| 亚洲乱码国产乱码精品精| 欧美成人性生活| 亚洲老头同性xxxxx| 国产成人精品在线播放| 日韩免费在线电影| 51精品国产黑色丝袜高跟鞋| 亚洲sss综合天堂久久| 91久久久在线| 久久精品99无色码中文字幕| 国产精品偷伦一区二区| 国产精品一区专区欧美日韩| 色婷婷综合成人av| 国产伦精品免费视频| 国产欧美一区二区三区四区| 亚洲男人天堂网| 亚洲成人精品久久久| 亚洲影影院av| 2020国产精品视频| 亚洲成人网久久久| 欧美性生交大片免费| 中文精品99久久国产香蕉| 国产精品偷伦免费视频观看的| 久久九九全国免费精品观看| 欧美老少做受xxxx高潮| 日韩黄色av网站| 美女扒开尿口让男人操亚洲视频网站| 不卡av电影院| 国产成人精品视频| 欧美美女18p| 亚洲天堂男人的天堂| 久久久av一区| 超碰日本道色综合久久综合| 亚洲福利小视频| 91超碰中文字幕久久精品| 国产成人涩涩涩视频在线观看| 色偷偷av亚洲男人的天堂| 日韩中文字幕精品视频| 欧洲亚洲在线视频| 欧美日韩成人网| 国产成人精品综合| 操91在线视频| 色综合天天综合网国产成人网|