C++中對象構(gòu)造順序

單個對象的構(gòu)造與析構(gòu)


  • 單個對象創(chuàng)建時構(gòu)造函數(shù)的調(diào)用順序
    • 1杀狡、調(diào)用父類的構(gòu)造過程
    • 2、調(diào)用成員變量的構(gòu)造函數(shù)(調(diào)用順序與聲明順序相同)
    • 3娜谊、調(diào)用類自身的構(gòu)造函數(shù)
  • 析構(gòu)函數(shù)與對應(yīng)構(gòu)造函數(shù)的調(diào)用順序相反
  • 多個對象析構(gòu)時
    • 析構(gòu)順序與構(gòu)造順序相反
  • 對于棧對象和全局對象涧至,類似于入棧與出棧的順序,最后構(gòu)造的對象被最先析構(gòu)
  • 堆對象的析構(gòu)發(fā)生在使用delete的時候退个,與delete的使用順序相關(guān)

局部對象


  • 對于局部對象
    • 當(dāng)程序執(zhí)行流到達(dá)對象的定義語句時進(jìn)行構(gòu)造

舉個??:

    int i = 0;
    Test a1 = i;
        
    while( i < 3 )
    {
        Test a2 = ++i;
    }
        
    if( i < 4 )
    {
        Test a = a1;
    }
    else
    {
        Test a(100);
    }

在這段代碼里Test類構(gòu)造順序是按照程序的執(zhí)行流依次往下進(jìn)行募壕。

堆對象


  • 對于堆對象
    • 當(dāng)程序執(zhí)行流到達(dá)new語句時創(chuàng)建對象
    • 使用new創(chuàng)建對象將自動觸發(fā)構(gòu)造函數(shù)的調(diào)用

再次舉??:

    int i = 0;
    Test* a1 = new Test(i); // Test(int i): 0
        
    while( ++i < 10 )
        if( i % 2 )
            new Test(i); // Test(int i): 1, 3, 5, 7, 9
        
    if( i < 4 )
        new Test(*a1);
    else
        new Test(100); // Test(int i): 100

在這段代碼中只有執(zhí)行new時在堆空間分配空間后才執(zhí)行構(gòu)造方法。

全局對象


  • 對于全局對象
    • 對象的構(gòu)造順序是不確定的
    • 不同的編譯器使用不同的規(guī)則確定構(gòu)造順序

最后舉一次??:

#include "test.h"

Test t4("t4");

int main()
{
    Test t5("t5");
}

這里的Test是全局對象帜乞,那它的構(gòu)造順序就不確定司抱,依編譯器而定筐眷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黎烈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匀谣,更是在濱河造成了極大的恐慌照棋,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件武翎,死亡現(xiàn)場離奇詭異烈炭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宝恶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門符隙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垫毙,你說我怎么就攤上這事霹疫。” “怎么了综芥?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵丽蝎,是天一觀的道長。 經(jīng)常有香客問我膀藐,道長屠阻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任额各,我火速辦了婚禮国觉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虾啦。我一直安慰自己麻诀,他們只是感情好蚜枢,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布针饥。 她就那樣靜靜地躺著,像睡著了一般丁眼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苞七,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天藐守,我揣著相機(jī)與錄音,去河邊找鬼蹂风。 笑死卢厂,一個胖子當(dāng)著我的面吹牛惠啄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撵渡,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼融柬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了趋距?” 一聲冷哼從身側(cè)響起粒氧,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤节腐,失蹤者是張志新(化名)和其女友劉穎外盯,沒想到半個月后翼雀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡锅纺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年囤锉,在試婚紗的時候發(fā)現(xiàn)自己被綠了坦弟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片官地。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖驱入,靈堂內(nèi)的尸體忽然破棺而出氯析,到底是詐尸還是另有隱情莺褒,我是刑警寧澤掩缓,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布遵岩,位于F島的核電站,受9級特大地震影響尘执,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜表悬,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一丧靡、第九天 我趴在偏房一處隱蔽的房頂上張望蟆沫。 院中可真熱鬧窘行,春花似錦饥追、人聲如沸罐盔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽六孵。三九已至,卻和暖如春劫窒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背主巍。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留逛艰,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓散怖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镇眷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一丹诀、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 7,822評論 0 27
  • 1. C++基礎(chǔ)知識點 1.1 有符號類型和無符號類型 當(dāng)我們賦給無符號類型一個超出它表示范圍的值時翁垂,結(jié)果是初始值...
    Mr希靈閱讀 18,008評論 3 82
  • 1.面向?qū)ο蟮某绦蛟O(shè)計思想是什么? 答:把數(shù)據(jù)結(jié)構(gòu)和對數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的方法封裝形成一個個的對象枚荣。 2.什么是類?...
    少帥yangjie閱讀 5,011評論 0 14
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,523評論 1 51
  • 收集非原創(chuàng)文章橄妆,如遇原作者祈坠,請私聊我,我會表明出處赦拘! 1--10 1. C++中什么數(shù)據(jù)分配在棧或堆躺同,靜態(tài)存儲區(qū)以...
    Juinjonn閱讀 4,944評論 0 30