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

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

C++虛析構函數的使用分析

2020-01-26 16:04:02
字體:
來源:轉載
供稿:網友
在C++中,不能聲明虛構造函數,但可以聲明虛析構函數。多態性是指不同的對象對同一消息有不同的行為特性。虛函數作為運行時多態性的基礎,主要是針對對象的,而構造函數是在對象產生之前運行的,因此虛構造函數是沒有意義的。
析構函數的功能是在該類對象消亡之前進行一些必要的清理工作,析構函數最好都是virtual的。
首先解釋一下虛構函數和指針之間是如何交互的,以及虛析構函數的具體含義。例如以下代碼,其中SomeClass是含有非virtual析構函數的一個類:
SomeClass *p= new SomeClass;
. . .  . . .
delect p;
為p調用delect時,會自動調用SomeClass類的析構函數。現在,再來看看將析構函數標記為virtual之后,會發生什么事情。
描述析構函數與虛函數機制的交互時,最簡單的表述是:將所有析構函數都視為具有相同的名字(即使它們并非真的同名)。例如,假定Derived類是Base類的一個派生類,并假定Base類中的析構函數標記為virtual?,F在來分析以下代碼:
Base *pBase= new Derived;
. . .  . . .
delect pBase;
為Base調用delect時,會調用一個析構函數。由于Base類中的析構函數標記為virtual,而且指向的對象屬于Derived類型,所以會調用Derived類中的析構函數。
應注意的一點是,將析構函數標記為virtual后,派生類所有的析構函數都自動成為virtual的(不管時候用virtual來標記它們)。同樣地,這種行為就好象所有析構函數都具有相同的名字(即使事實上不同名)。
下面說的是將所有析構函數都標記為virtual的好處。假定Base類有一個指針類型的成員變量pB,Base類的構造函數會創建由pB指向的一個動態變量,而Base類的析構函數會刪除pB指向的動態變量。另外,假定Base類沒有標記為virtual,并假定Derived類(它從Base派生)有一個指針類型的成員變量pD,Derived類的構造函數會創建有pD指向的一個動態變量,而Derived類的析構函數會刪除pD指向的動態變量。分析一下以下代碼:
Base *pBase= new Derived;
. . .  . . .
delect pBase;
由于基類中的析構函數沒有標記為virtual,所以只會調用Base類的析構函數。它會將pB指向的動態變量占用的內存返還給自由存儲。但是,對于pD指向的動態變量來說,它占用的內存永遠不會返還給自由存儲(除非程序終止)。
另一方面,如果基類Base的析構函數標記為virtual,那么為pBase調用delect時,就會調用Derived類的析構函數(因為指向的對象屬于Derived類型)。Derived類的析構函數會刪除pD指向的動態變量,再自動調用基類Base的析構函數。后者會刪除pB指向的動態變量。因此,將基類析構函數標記為virtual之后,所有內存都能成功地由自由存儲回收。為了準備好迎接這種情況,最好總是將析構函數標記為virtual。
舉個例子說明一下:
復制代碼 代碼如下:

#include "stdafx.h"
#include <iostream>
using namespace std;
class Base
{
public:
 Base(){cout << " Constructor in Base. " << endl;}
 virtual ~Base(){ cout << " Destructor in Base. " << endl;}
};
class Derived:public Base
{
public:
 Derived(){cout << " Constructor in Derived. " << endl;}
 ~Derived(){cout << "Destructor in Derived. " << endl;}
};
int _tmain(int argc, _TCHAR* argv[])
{
 Base *p = new Derived;
 delete p;
 return 0;
}

輸出:
    Constructor in Base.
    Constructor in Derived.
    Destroctor in Derived.
    Destroctor in Base.
 
如果Base中的析構函數,沒有virtual修飾,輸出為:
     Constructor in Base.
     Constructor in Derived.
     Destroctor in Base.
這樣子類Derived中的析構函數沒有執行,會造成內存泄露,因此,如果一個類是其他類的基類,應該將其析構函數聲明為虛析構函數。另外從本例中也可以看出,構造函數、析構函數的執行順序。構造函數,先基類后子類,析構函數,先子類,后基類。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品极品在线观看播放免费视频| 日韩av一区二区在线| 成人午夜在线视频一区| 欧美一级高清免费播放| 亚洲国产精久久久久久久| 国产美女扒开尿口久久久| 国产精品高潮呻吟久久av无限| 欧美另类极品videosbest最新版本| 在线观看免费高清视频97| 国产精品嫩草影院一区二区| 亚洲欧美制服另类日韩| 亚洲精品久久在线| 97精品一区二区三区| 热草久综合在线| 精品中文字幕视频| 久久精品国产久精国产思思| 91精品国产91久久久久福利| 北条麻妃久久精品| 日韩电影大全免费观看2023年上| 日产日韩在线亚洲欧美| 奇米4444一区二区三区| 国产成人福利网站| 九九热最新视频//这里只有精品| 国产精品久久一区| 日韩高清电影免费观看完整版| 欧美亚洲在线视频| 久久五月天色综合| 亚洲欧美中文日韩在线| 国产精品一区专区欧美日韩| 激情久久av一区av二区av三区| 中文字幕少妇一区二区三区| 国产精品你懂得| 中文字幕亚洲综合久久筱田步美| 一个人看的www久久| 国产男女猛烈无遮挡91| 日韩欧美国产中文字幕| 国产精品福利在线| 午夜精品国产精品大乳美女| 国语自产精品视频在线看| 九九久久国产精品| 国产精品午夜一区二区欲梦| 亚洲精品中文字幕女同| 搡老女人一区二区三区视频tv| 久久精品91久久久久久再现| 日韩电影免费观看在线观看| 中文字幕免费国产精品| 国产三级精品网站| 国产精品小说在线| 日韩精品欧美国产精品忘忧草| 亚洲第一中文字幕在线观看| 久久精品99国产精品酒店日本| 久久91精品国产91久久跳| 在线成人免费网站| 国产精品激情av电影在线观看| 91精品国产乱码久久久久久蜜臀| 人人爽久久涩噜噜噜网站| 久久偷看各类女兵18女厕嘘嘘| 久久久久久久久久久91| 成人a在线视频| 91精品国产成人| 成人免费福利在线| 欧美精品在线观看| 亚洲人成电影网站色www| 欧美性少妇18aaaa视频| 日韩电影免费观看在线观看| 国产精品久久久久免费a∨| 日韩在线视频一区| 亚洲va欧美va国产综合剧情| 久久久噜噜噜久久久| 亚洲成人动漫在线播放| 国产精品99久久久久久久久久久久| 国产日韩在线免费| 日韩中文字幕在线免费观看| 中文字幕精品网| 欧美影院成年免费版| 亚洲欧美国产精品| 亚洲精品网站在线播放gif| 亚洲精品91美女久久久久久久| 欧美日韩国产综合视频在线观看中文| 亚洲精品国产精品久久清纯直播| 国产精品一区二区三区在线播放| 久久免费视频在线| 精品亚洲一区二区三区| 国内精品久久久久久久久| 日韩精品视频在线观看网址| 国产欧美精品xxxx另类| 久久影院免费观看| 色综合久久悠悠| 在线精品高清中文字幕| 国产精品自产拍在线观看中文| 亚洲精品第一页| 久久久久99精品久久久久| 日韩av电影国产| 91九色综合久久| 亚洲成人久久一区| 亚洲福利视频专区| 91性高湖久久久久久久久_久久99| 日韩av观看网址| 欧美日韩在线第一页| 91精品视频免费| 狠狠色狠狠色综合日日小说| 伊人久久大香线蕉av一区二区| 俺去啦;欧美日韩| 亚洲欧洲xxxx| 欧美国产视频日韩| 成人激情视频小说免费下载| 成人免费网站在线| 亚洲色图第一页| 亚洲综合大片69999| 欧美肥臀大乳一区二区免费视频| 91久久久久久久久久| 欧美亚洲日本黄色| 久久精品色欧美aⅴ一区二区| 中文字幕一区二区三区电影| 色琪琪综合男人的天堂aⅴ视频| 中文字幕久热精品视频在线| 亚洲人免费视频| 久久久伊人日本| 欧美极品少妇xxxxⅹ免费视频| 狠狠久久五月精品中文字幕| 欧美在线免费观看| 国产69精品久久久久久| 欧美性猛交xxxxx免费看| 欧美激情aaaa| 国产午夜精品视频免费不卡69堂| 欧美电影免费观看电视剧大全| 国产剧情久久久久久| 欧美日韩中国免费专区在线看| 国产色综合天天综合网| 国产中文字幕91| 国产在线精品一区免费香蕉| 国产欧美va欧美va香蕉在| 色偷偷亚洲男人天堂| 亚洲成人激情视频| 精品久久中文字幕| 国产精品久久中文| 岛国av一区二区三区| 最新国产精品拍自在线播放| 亚洲在线免费视频| 国产一区二区香蕉| 黄网动漫久久久| 国外成人在线直播| 国产精品美女在线观看| 国产精品热视频| 久久久999精品视频| 日本精品视频网站| 在线丨暗呦小u女国产精品| 亚洲成成品网站| 91在线直播亚洲| 成人久久久久爱| 欧美大尺度在线观看| 国产91精品久久久久久久| 久久99精品久久久久久噜噜| 91国偷自产一区二区三区的观看方式| 国产精品视频999| 国产精品精品一区二区三区午夜版| 91精品91久久久久久| 国产美女搞久久| 国内精品久久久久伊人av| 亚洲少妇中文在线| 成人福利在线视频| 日韩在线免费av| 欧美在线视频一区| 国产原创欧美精品|