2012-02-05 78 views
9

可能重複:
What does a colon following a C++ constructor name do?結構構造函數語法

我發現下面的例子在線然而,對於構造函數的語法混淆了我一點點特別是:象徵。任何人都可以給我一個簡短的解釋嗎?謝謝。

struct TestStruct { 
    int id; 
    TestStruct() : id(42) 
    { 
    } 
}; 
+0

的可能重複(http://stackoverflow.com/questions/1272680/what-does-a -colon跟隨-AC-構造函數名稱-DO)。另請參閱重複列表[這裏](http://stackoverflow.com/questions/3504215/what-does-the-colon-mean-in-a-constructor) – 2012-02-05 00:18:48

回答

20

構造函數初始化id42當它被調用。它被稱爲initliazation列表。

在您的例子,你可以用一些成員做得一樣好它相當於

struct TestStruct { 
    int id; 
    TestStruct() 
    { 
     id = 42; 
    } 
}; 

struct TestStruct { 
    int id; 
    double number; 
    TestStruct() : id(42), number(4.1) 
    { 
    } 
}; 

它在構造函數中的唯一目的就是初始化成員變量

struct TestStruct { 
    int id; 
    double number; 
    TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { } 
}; 
是有用
+1

「同樣的事情」是有點傲慢,也許是公平的誤導。 – 2012-02-05 00:20:18

+0

同意,並編輯:) – Vache 2012-02-05 00:24:30

+4

很酷,謝謝,但它不僅是「有用的」,但它必須非常必要的非必須初始化的變量,如基本子對象,常量或引用。 – 2012-02-05 00:25:42