第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++中靜態(tài)對象的銷毀順序

C ++中靜態(tài)對象的銷毀順序

C++
縹緲止盈 2019-12-02 12:53:29
我可以控制銷毀靜態(tài)對象的順序嗎?有什么方法可以執(zhí)行我想要的命令?例如,以某種方式指定我希望某個對象最后被破壞,或者至少在另一個靜態(tài)對象之后被破壞?
查看完整描述

3 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊

靜態(tài)對象以相反的順序破壞。而且施工順序很難控制。您唯一可以確定的是,將按定義順序構(gòu)造在同一編譯單元中定義的兩個對象。其他任何事物或多或少都是隨機的。


查看完整回答
反對 回復(fù) 2019-12-02
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊

對此的其他答案堅持認(rèn)為它無法完成。他們是對的,依據(jù)規(guī)范-但有是一招,可以讓你做到這一點。


僅創(chuàng)建一個單一的靜態(tài)變量,它包含了所有其他的事情,你通常會做靜態(tài)變量,像這樣一類或結(jié)構(gòu)的,:


class StaticVariables {

    public:

    StaticVariables(): pvar1(new Var1Type), pvar2(new Var2Type) { };

    ~StaticVariables();


    Var1Type *pvar1;

    Var2Type *pvar2;

};


static StaticVariables svars;

您可以按所需的順序創(chuàng)建變量,更重要的是,可以按所需的順序破壞變量,方法是在的構(gòu)造函數(shù)和析構(gòu)函數(shù)中StaticVariables。為了使其完全透明,您也可以創(chuàng)建對變量的靜態(tài)引用,如下所示:


static Var1Type &var1(*svars.var1);

Voilà-完全控制。:-)也就是說,這是額外的工作,通常是不必要的。但是,當(dāng)有必要時,了解它非常有用。


查看完整回答
反對 回復(fù) 2019-12-02
?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊

靜態(tài)對象的破壞順序與生成它們的順序相反(例如,第一個破壞的對象最后被破壞),您可以使用第47條中所述的技術(shù)來控制靜態(tài)對象的生成順序,在Meyers的書《Effective C ++》中“ 確保在使用全局對象之前對其進(jìn)行了初始化 ” 。


例如,以某種方式指定我希望某個對象最后被破壞,或者至少在另一個靜態(tài)注入之后被破壞?


確保在其他靜態(tài)對象之前構(gòu)造它。


如何控制施工順序?并非所有的靜態(tài)函數(shù)都在同一個dll中。


為了簡單起見,我將忽略它們不在同一個DLL中的事實。


我對邁耶斯項目47(長4頁)的解釋如下。假設(shè)您在這樣的頭文件中定義了全局變量...


//GlobalA.h

extern GlobalA globalA; //declare a global

...向這樣的包含文件添加一些代碼...


//GlobalA.h

extern GlobalA globalA; //declare a global

class InitA

{

  static int refCount;

public:

  InitA();

  ~InitA();

};

static InitA initA;

這樣做的結(jié)果是,任何包含GlobalA.h的文件(例如,定義了第二個全局變量的GlobalB.cpp源文件)都將定義InitA類的靜態(tài)實例,該實例將在該實例中的其他任何對象之前進(jìn)行構(gòu)造源文件(例如,在第二個全局變量之前)。


該InitA類具有靜態(tài)引用計數(shù)器。當(dāng)構(gòu)造第一個InitA實例時(現(xiàn)在可以保證在構(gòu)造GlobalB實例之前),InitA構(gòu)造函數(shù)可以執(zhí)行其必須做的一切以確保初始化globalA實例。


查看完整回答
反對 回復(fù) 2019-12-02
  • 3 回答
  • 0 關(guān)注
  • 772 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號