2013-10-09 75 views
0

這可能是一個非常基本的問題,但我從來沒有想過要正確理解它。當我宣佈成員變量,我通常一類成員對象聲明的區別

class Bloke 
    { 
    public: 
    Bloke(): age(24) {} 
    int age; 
    } 

左右的時間內做,我通常是分號後宣佈該成員變量與「membera(),memberb()」等,隨着時間的推移我有點懶,開始也包括直接在{成員變量的聲明},即

Bloke(){age=24;} 
int age; 

甚至分別在構造類的外部。有人能解釋一下,如果這是錯誤的?謝謝。

回答

0

不,它沒有錯,直到C++ 11這是唯一的方法。然而,大多數人會認爲第一種方法對於C++ 11來說更容易和更習慣,它被稱爲構造函數代理。在C++ 11你也可以做內聯初始化對於某些類型的像這樣:

class Bloke 
{ 
    public: 
    Bloke():{} 
    int age = 24; 
}; 

年齡的值是24,除非你改變它在其他地方的所有初始化的對象。在適用的情況下,IMO構造函數代表應該用於任何情況,並且保存構造函數的主體以用於額外的工作。

+0

我以爲我沒有C++ 11我正在使用MingW 3.4.5 - 這是C++ 11嗎? – user2856452

+0

@ user2856452不熟悉該編譯器,但我敢肯定你不能沒有C++ 11做構造函數委託,無論哪種方式我的答案仍然適用 – aaronman

+0

有趣的是當我嘗試C++語法像雙向量與「>>」我有在「>>」和C++ 11中有人說你可以使用>>之間有一個空格。所以我想我沒有C++ 11 – user2856452