日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

《C++编程惯用法——高级程序员常用方法和技巧》——2.9 静态对象的构造

發(fā)布時間:2025/4/16 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《C++编程惯用法——高级程序员常用方法和技巧》——2.9 静态对象的构造 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本節(jié)書摘來自異步社區(qū)出版社《C++編程慣用法——高級程序員常用方法和技巧》一書中的第2章,第2.9節(jié),作者: 【美】Robert B. Murray ,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號查看。

2.9 靜態(tài)對象的構(gòu)造

我們也可以用構(gòu)造函數(shù)來對那些有著static存儲類型的對象進行初始化:

static String hello("Hello world");

C++編譯系統(tǒng)確保:所有的靜態(tài)對象在它們被使用之前都會被初始化。很多的編譯器實現(xiàn)的做法是將所有的靜態(tài)對象放到main函數(shù)被調(diào)用之前進行初始化,但C++語言規(guī)則中也允許我們在(動態(tài)的)鏈接時期用動態(tài)的鏈接器來初始化編譯單元中的所有對象。

對于在同一個編譯單元中出現(xiàn)的靜態(tài)對象,它們的初始化順序和它們在代碼中出現(xiàn)的順序是一致的:

String dafault_name("foo");String default_src_file(default_name + ".c");

在上面的代碼中,我們可以確保default_name的初始化操作要早于default_src_file的初始化操作。在同一文件中出現(xiàn)的靜態(tài)對象,它們的析構(gòu)順序和它們的構(gòu)造順序正好相反,因此default_src_file必須早于default_name被析構(gòu)。

在不同文件中的初始化操作的順序則是未定義的:

extern String default_name; String default_src_file(default_name +".c");  //Bug!

我們無法保證,default_name會早于default_src_file被創(chuàng)建。

對于上面的那個問題,我們并沒有一個簡單的解決方法。如果我們有著一個依賴于定義在其他文件中的其他靜態(tài)對象的靜態(tài)對象(如default_src_file),我們就應(yīng)該試著將這兩個對象放在同一個文件中(這樣我們就可以得到它們的初始化的確切順序)。如果我們做不到這點,我們就不得不將這些初始化操作延遲到main函數(shù)被執(zhí)行時才執(zhí)行它們:

extern String default_name; String* default_src_file = 0;Static void init_names(){default_src_file = new String (default_name + ".c");//其他的初始化操作 }main() {init_names();

如果我們的代碼來自于一個函數(shù)庫,在那里并沒有我們所期望的main函數(shù),那么我們還可以在每個使用了具有依賴關(guān)系的靜態(tài)對象的函數(shù)中對該對象進行檢測,看看它是否已經(jīng)被初始化了:

extern String default_name; String* default_src_fi1e = 0;void routine_that_uses_name(){if (default_src_file == 0)default_src_file = new String(default_name + ".C");//使用default_src_file 我```

總結(jié)

以上是生活随笔為你收集整理的《C++编程惯用法——高级程序员常用方法和技巧》——2.9 静态对象的构造的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。