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

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

C++中構造函數與析構函數的調用順序詳解

2020-01-26 14:16:20
字體:
來源:轉載
供稿:網友

前言

在使用構造函數和析構函數時,需要特別注意對它們的調用時間和調用順序。在一般情況下,調用析構函數的次序正好與調用構造函數的次序相反:最先被調用的構造函數,其對應的(同一對象中的)析構函數最后被調用,而最后被調用的構造函數,其對應的析構函數最先被調用。

簡單來說,其構造函數的順序就一句話:

基類構造函數 -> 成員的構造函數 -> 構造函數體內語句

看下面一個代碼示例:

#include <iostream>using namespace std;class A { public:  A() { cout << "A()" << endl; }  ~A() { cout << "~A()" << endl; }};class B { public:  B(int b) { cout << "B(" << b << ")" << endl; }  ~B() { cout << "~B()" << endl; }};class C { public:  C(int c) { cout << "C(" << c << ")" << endl; }  ~C() { cout << "~C()" << endl; }};class D { public:  D() { cout << "D()" << endl; }  ~D() { cout << "~D()" << endl; }};class E: public B, public A { public:  D d;  C c;  E(): c(3), B(5) { cout << "E()" << endl; }  ~E() { cout << "~E()" << endl; }};int main(){ E e; return 0;}

你能看出這份代碼的輸出嗎?

依照上面提到的,首先應該執行的是基類的構造函數。不過 C++ 語言是支持多繼承的,那么當某個類繼承多個類時,其構造順序又是怎樣的呢?答案是:簡單的依照繼承的順序構造。

接下來,就會執行其成員變量的構造函數,這個順序也很簡單,就是依照類代碼中成員變量的順序依次執行的。

最后才會執行構造函數中的具體代碼。

注意,在上述過程中,執行的順序與構造函數參數的順序無關。

通過 new 創建一個對象會調用其構造函數,通過 delete 刪除一個對象會調用其析構函數。

如果沒有顯示的使用 delete 刪除一個對象的話,析構函數執行的順序與構造函數的順序相反。

所以,上述代碼的輸出就是:

B(5)A()D()C(3)E()~E()~C()~D()~A()~B()

下面歸納一下什么時候調用構造函數和析構函數:

      1) 在全局范圍中定義的對象(即在所有函數之外定義的對象),它的構造函數在文件中的所有函數(包括main函數)執行之前調用。但如果一個程序中有多個文件,而不同的文件中都定義了全局對象,則這些對象的構造函數的執行順序是不確定的。當main函數執行完畢或調用exit函數時(此時程序終止),調用析構函數。

      2) 如果定義的是局部自動對象(例如在函數中定義對象),則在建立對象時調用其構造函數。如果函數被多次調用,則在每次建立對象時都要調用構造函數。在函數調用結束、對象釋放時先調用析構函數。

      3) 如果在函數中定義靜態(static )局部對象,則只在程序第一次調用此函數建立對象時調用構造函數一次,在調用結束時對象并不釋放,因此也不調用析構函數,只在main函數結束或調用exit函數結束程序時,才調用析構函數。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模极品一区二区三区| 国产午夜精品理论片a级探花| 91丨九色丨国产在线| 国产亚洲精品91在线| 亚洲免费影视第一页| 97人人爽人人喊人人模波多| 欧洲成人在线视频| 国产精品视频一区国模私拍| 欧美另类99xxxxx| 日韩精品在线观看一区| 国产mv免费观看入口亚洲| 日韩在线视频播放| 国产在线拍揄自揄视频不卡99| 热99久久精品| 久久久久久久97| 欧美高清激情视频| 亚洲国产成人精品女人久久久| 久久男人资源视频| 国产精品91一区| 日韩在线高清视频| 一本色道久久88综合日韩精品| 欧美最猛性xxxxx亚洲精品| 日韩精品一区二区视频| 欧美激情精品久久久久久变态| 亚洲自拍欧美另类| 亚洲美女激情视频| 日韩精品日韩在线观看| 国产精品中文久久久久久久| 国产亚洲欧美一区| 亚洲色图国产精品| 国产日韩在线播放| 日韩美女av在线免费观看| 日韩亚洲欧美成人| 狠狠躁夜夜躁久久躁别揉| 亚洲欧美变态国产另类| 国内精品视频一区| 亚洲一区二区在线| 亚洲大胆人体av| 国产99久久精品一区二区永久免费| 97免费中文视频在线观看| 欧美性xxxxx| 欧美一级视频免费在线观看| 国产精品嫩草影院一区二区| 成人信息集中地欧美| 日韩中文在线观看| 日韩亚洲欧美成人| 国产精品999999| 91国偷自产一区二区三区的观看方式| 精品免费在线观看| 欧美在线中文字幕| 成人午夜两性视频| 成人做爽爽免费视频| 深夜福利亚洲导航| 亚洲高清在线观看| 在线成人激情黄色| 日韩亚洲第一页| 久久久久久久久久久亚洲| 国产精品国产三级国产专播精品人| 国产精品中文字幕在线| 一区二区三区高清国产| 日韩精品免费在线视频观看| 国产精品久久久久久久7电影| 91高清视频免费观看| 热久久这里只有| 国产亚洲视频在线观看| 亚洲日本成人女熟在线观看| 久久99精品久久久久久噜噜| 日本亚洲欧美成人| 国产精品久久久久久久7电影| 欧洲成人在线视频| 亚洲美女av在线| 91po在线观看91精品国产性色| 精品丝袜一区二区三区| 亚洲欧美国产一本综合首页| 97视频在线免费观看| 成人av在线天堂| 国产精品一区二区三区免费视频| 精品久久久中文| 97在线视频免费播放| 欧美激情精品久久久| www.日韩.com| 欧美在线不卡区| 国自产精品手机在线观看视频| 少妇久久久久久| 亚洲国产精品yw在线观看| 欧美激情免费看| 亚洲综合色激情五月| 欧美亚洲在线视频| 欧美日韩亚洲一区二| 欧美黄色片在线观看| 亚洲国产一区二区三区在线观看| 91精品久久久久久综合乱菊| 亚洲男女自偷自拍图片另类| 69视频在线免费观看| 日韩av免费在线播放| 欧美激情区在线播放| 欧美综合第一页| 国产精品亚洲欧美导航| 久久精品福利视频| 久久琪琪电影院| 国产成人一区二区三区| 日韩不卡中文字幕| 国产精品吹潮在线观看| 欧美丝袜第一区| 欧美亚洲国产另类| 亚洲精品国产综合区久久久久久久| 亚洲已满18点击进入在线看片| 日韩欧美极品在线观看| 欧美一区二区三区精品电影| 欧洲s码亚洲m码精品一区| 欧美国产高跟鞋裸体秀xxxhd| 日韩在线视频二区| 久久精品国产一区| 国产亚洲成精品久久| 欧美第一淫aaasss性| 国产在线视频2019最新视频| 久久久免费高清电视剧观看| 国产精品久久久久久久美男| 日韩成人在线视频观看| 国产盗摄xxxx视频xxx69| 欧美成人午夜激情| 国产男女猛烈无遮挡91| 欧美激情图片区| 91在线|亚洲| 欧洲亚洲免费视频| 4444欧美成人kkkk| 亚洲国产毛片完整版| 性日韩欧美在线视频| 日韩av电影在线免费播放| 国产在线视频91| 亚洲r级在线观看| 91成人福利在线| 日韩成人在线视频观看| 亚洲国产精品一区二区三区| 成人精品久久一区二区三区| 日韩欧美一区二区在线| 一本色道久久88精品综合| 日韩av一卡二卡| 夜夜狂射影院欧美极品| 欧美日韩美女在线| 亚洲综合在线播放| 国产成人精品免费久久久久| 国产精品一二区| 亚洲综合精品伊人久久| 一本大道久久加勒比香蕉| 秋霞午夜一区二区| 欧美第一黄网免费网站| 精品久久久久久久久久ntr影视| 国产欧美久久久久久| 亚洲人成在线播放| 欧美黑人狂野猛交老妇| …久久精品99久久香蕉国产| 国产香蕉一区二区三区在线视频| 中文亚洲视频在线| 欧美激情欧美狂野欧美精品| 国产91精品最新在线播放| 九色精品美女在线| 国产日韩欧美电影在线观看| 欧美成人免费大片| 国产成人综合精品| 久久99视频免费| 国产一区二区三区视频| 亚洲欧美日韩中文视频| 狠狠躁夜夜躁人人爽超碰91|