您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C++中怎么初始化類靜態成員,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
C++類靜態成員初始化相關實現代碼介紹:
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(編譯鏈接都沒有問題)。。。,似乎代碼并沒有執行regi函數?
在C++類靜態成員初始化中初始化變量分為"動態初始化"和"靜態初始化","動態初始化"為利用函數進行初始化,"靜態初始化"為常量表達式進行初始化. C++標準對于類中的常量表達式的"動態初始化"似乎并未做說明,所以是否支持類中常數靜態變量的動態初始化也就取決與編譯器的設計了. 但是無論如何vc7.1的編譯結果都是不對的,它并沒有給出錯誤,但是結果與邏輯不向符合,這應該是vc7.1的一個bug.(在vs2005中的C++編譯器已經修正了這個bug,給出了一個編譯Error)
關于C++中怎么初始化類靜態成員就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。