84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
欢迎选择我的课程,让我们一起见证您的进步~~
如@GAO 所說,C++11的類別內初始化允許非static成員的初始化,可以用{}或=號。 建構函式的初始化列表 與 類別內成員初始化 沒有誰好誰不好,誰來替代誰,兩種方法可互相補充使用。類別內初始化有一些好處:1、當你有多個建構子時,如果使用初始化列表,每個建構函式都要寫一遍,煩人不說,同時產生重複程式碼,修改易漏。如果把這些成員都用類別內初始化,初始化列表就不用再列出它們了。 2、類內初始化,成員之間的順序是隱式的,會有些便利。如果使用初始化列表,它是有順序之分的,順序不對,編譯器會警告。 3、對於簡單的類別或結構,沒有建構子的,可以直接用類別內初始化在成員宣告的同時直接初始化,方便。
對於某些類別類型的成員初始化要小心,如果成員之間有依賴關係,這時使用初始化列表明確的指明這些成員的構造(初始化)順序是比較穩健的。
如果成員已經使用了類別內初始化,但在建構函式的初始化列表又列出來,編譯器以後者優先,類別內初始化會被忽略。如果某些成員使用不同建構函式時,會有不同的預設值,這種情況就要用初始化列表。同時,其它成員仍可使用類別內初始化。
類別內初始化絕對不是解決什麼內建型別預設初始化時未定義問題。物件導向程式設計一個很重要的原則,程式設計師有責任保證物件產生出來,它的每個成員都必須是初始化的,這是設計問題以及基本意識,無論是使用哪種方法初始化。
好像C++11之後就支援類別內初始化了,在先前類別內初始化是不允許的
class A{ static const int a = 7; //C++98允许 int b = 8; //C++11允许,而98不允许 }
我個人認為類別內初始化將會隨著C++11 成為主流。
如@GAO 所說,C++11的類別內初始化允許非static成員的初始化,可以用{}或=號。
建構函式的初始化列表 與 類別內成員初始化 沒有誰好誰不好,誰來替代誰,兩種方法可互相補充使用。類別內初始化有一些好處:
1、當你有多個建構子時,如果使用初始化列表,每個建構函式都要寫一遍,煩人不說,同時產生重複程式碼,修改易漏。如果把這些成員都用類別內初始化,初始化列表就不用再列出它們了。
2、類內初始化,成員之間的順序是隱式的,會有些便利。如果使用初始化列表,它是有順序之分的,順序不對,編譯器會警告。
3、對於簡單的類別或結構,沒有建構子的,可以直接用類別內初始化在成員宣告的同時直接初始化,方便。
對於某些類別類型的成員初始化要小心,如果成員之間有依賴關係,這時使用初始化列表明確的指明這些成員的構造(初始化)順序是比較穩健的。
如果成員已經使用了類別內初始化,但在建構函式的初始化列表又列出來,編譯器以後者優先,類別內初始化會被忽略。如果某些成員使用不同建構函式時,會有不同的預設值,這種情況就要用初始化列表。同時,其它成員仍可使用類別內初始化。
類別內初始化絕對不是解決什麼內建型別預設初始化時未定義問題。物件導向程式設計一個很重要的原則,程式設計師有責任保證物件產生出來,它的每個成員都必須是初始化的,這是設計問題以及基本意識,無論是使用哪種方法初始化。
好像C++11之後就支援類別內初始化了,在先前類別內初始化是不允許的
我個人認為類別內初始化將會隨著C++11 成為主流。