C++類靜態(tài)成員初始化相關問題答疑
C++編程語言中的類靜態(tài)成員如何才能正確的進行初始化呢?我們今天就為大家詳細介紹一下這方面的知識。希望能夠幫助大家充分的掌握C++類靜態(tài)成員初始化的應用技巧,以方便將來的程序開發(fā)。
C++類靜態(tài)成員初始化相關實現(xiàn)代碼介紹:
- class mytestclass
 - {
 - public:
 - const static int i = 5;
 - };
 - int main()
 - {
 - std::cout<<mytestclass::i<<std::endl;
 - return 0;
 - }
 
結果沒有問題,輸出為5(編譯器為vc7.1),但是在下面這個例子中:
- int regi()
 - {
 - return 5;
 - }
 - class mytestclass
 - {
 - public:
 - const static int i = regi();
 - };
 - int main()
 - {
 - std::cout<<mytestclass::i<<std::endl;
 - return 0;
 - }
 
輸出卻不正確,輸出為0(編譯鏈接都沒有問題)。。。,似乎代碼并沒有執(zhí)行regi函數(shù)?
在C++類靜態(tài)成員初始化中初始化變量分為"動態(tài)初始化"和"靜態(tài)初始化","動態(tài)初始化"為利用函數(shù)進行初始化,"靜態(tài)初始化"為常量表達式進行初始化. C++標準對于類中的常量表達式的"動態(tài)初始化"似乎并未做說明,所以是否支持類中常數(shù)靜態(tài)變量的動態(tài)初始化也就取決與編譯器的設計了. 但是無論如何vc7.1的編譯結果都是不對的,它并沒有給出錯誤,但是結果與邏輯不向符合,這應該是vc7.1的一個bug.(在vs2005中的C++編譯器已經修正了這個bug,給出了一個編譯Error)
【編輯推薦】















 
 
 





 
 
 
 