国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

C#與C++在靜態(tài)構(gòu)造函數(shù)上有何異同?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-24 18:58:46

  這里我們將討論的是C#與C++在靜態(tài)構(gòu)造函數(shù)上的異同,通過這一關(guān)鍵點(diǎn),希望能讓大家更好的了解C#與C++,也對大家今后的工作有所幫助。

  在C#中,類的靜態(tài)構(gòu)造函數(shù)用于在使用類之前進(jìn)行相關(guān)的初始化工作;比如,初始化靜態(tài)成員或執(zhí)行特定操作。CLR 在第一次創(chuàng)建該類對象或調(diào)用該類靜態(tài)方法時自動調(diào)用靜態(tài)構(gòu)造函數(shù)。同時,CLR保證靜態(tài)構(gòu)造函數(shù)的線程安全性(準(zhǔn)確地說是,只會調(diào)用一次,不存在多線程問題)。

  下面是MSDN對靜態(tài)構(gòu)造函數(shù)特點(diǎn)的描述:

  1.靜態(tài)構(gòu)造函數(shù)既沒有訪問修飾符,也沒有參數(shù)

  2.在創(chuàng)建第一個實例或引用任何靜態(tài)成員之前,將自動調(diào)用靜態(tài)構(gòu)造函數(shù)來初始化類

  3.無法直接調(diào)用靜態(tài)構(gòu)造函數(shù)

  4.在程序中,用戶無法控制何時執(zhí)行靜態(tài)構(gòu)造函數(shù)

  C++語言規(guī)范并未包含類似靜態(tài)構(gòu)造函數(shù)的東西,但在使用類之前做初始化工作的需求卻是客觀存在的。就滿足需求本身來講,C++完全可以通過手動方式實現(xiàn),但要處理好初始化時機(jī),線程安全性等問題。本文則嘗試通過C++的模版機(jī)制模擬實現(xiàn)靜態(tài)構(gòu)造函數(shù),避免手動初始化的繁瑣實現(xiàn)。對于需要靜態(tài)構(gòu)造函數(shù)的類A,只需用繼承static_constructable模版類,并提供 static void statici_constructor()靜態(tài)方法即可:

  1.class A : static_constructable

  2.{

  3.public:

  4. static void static_constructor() {

  5. std::cout << “static constructor a” << std::endl;

  6. s_string = “abc”; //初始化靜態(tài)數(shù)據(jù)

  7. }

  8.

  9. static std::string s_string;

  10.

  11.public:

  12. A(){

  13. std::cout << “constructor a” << std::endl;

  14. }

  15.

  16.private:

  17. int m_i;

  18.};

  19.

  20.std::string A::s_string;

  21.

  22.int _tmain(int argc, _TCHAR* argv[]){

  23. std::cout << “beginning of main” << std::endl;

  24.

  25. assert(sizeof(A) == sizeof(int));//繼承不改變A的內(nèi)存布局

  26. assert(A::s_string == ““);

  27. A a1;

  28. assert(A::s_string == “abc”);

  29. A a2;

  30. std::cout << “end of main” << std::endl;

  31.

  32. return 0;

上一篇:編程必知:C++的常規(guī)特性有哪些?
下一篇:C++中的內(nèi)聯(lián)函數(shù)(inline)應(yīng)用常見問題解答

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!