亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 11626 | 回復(fù): 4
打印 上一主題 下一主題

c++類靜態(tài)成員變量初始化順序問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-08-08 13:58 |只看該作者 |倒序?yàn)g覽
本帖最后由 Moon_Bird 于 2012-03-31 20:27 編輯
  1. #include <iostream>  
  2. using namespace std;  
  3. class ClassA {  
  4. public:  
  5. ClassA(): {  
  6.         cout << "ClassA Constructor!" << endl;  
  7.     }  
  8. void Func() {  
  9.       cout << "ClassA Func() Called! Num:" << m_nNum << endl;  
  10. }  
  11. int m_nNum;  
  12. };  
  13. class ClassB {  
  14. public:  
  15.     ClassB() {  
  16.        cout << "ClassB Constructor! " << endl;  
  17.       s_A.Func();  
  18. }  

  19. protected:  
  20.      static ClassA s_A;  
  21. };  


  22. ClassB TestClass;                      //在初始化B內(nèi)的靜態(tài)成員之前就先定義了這個(gè)對(duì)象
  23. ClassA ClassB::s_A;  

  24. int main(int argc, char *argv[])  
  25. {  
  26.    system( "PAUSE ");  
  27.   return 0;  
  28. }
復(fù)制代碼
運(yùn)行之后,輸出結(jié)果是這樣的:
ClassB Constructor!
ClassA Func() Called! Num: 0
ClassA Constructor!

有哪位大神能解釋下為什么會(huì)以這樣的順序輸出,而且能編譯通過?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-08-08 16:08 |只看該作者
以前看 C++標(biāo)準(zhǔn) 還是《C++編程語言》里說過靜態(tài)初始化,TestClass和s_A都是復(fù)雜類型,它們的靜態(tài)初始化優(yōu)先級(jí)是一樣的,并且是在同一個(gè)文件里定義的,所以按照定義的順序初始化。
所以TestClass的構(gòu)造函數(shù)先被調(diào)用,這時(shí)s_A還沒有被初始化,但是s_A.Func()的代碼正好不會(huì)出錯(cuò)而已

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-08-08 21:52 |只看該作者
呼喚大神 來 解惑 啊 !     俺的處女貼啊 ,回復(fù)的太少了,傷積極性哦      

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
4 [報(bào)告]
發(fā)表于 2011-08-08 22:04 |只看該作者
我覺得是C++的靈活性所致的,不必太過強(qiáng)求這樣的結(jié)論。

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
5 [報(bào)告]
發(fā)表于 2011-08-09 14:38 |只看該作者
沒有任何奇怪的地方

既然是如下順序定義的
ClassB TestClass;
ClassA ClassB::s_A;
自然是同樣順序構(gòu)造,而之所以在s_A構(gòu)造前 ClassB::s_A.m_nNum 值為0,是因?yàn)槿肿兞孔詣?dòng)初始化為0。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP