2012-09-17 214 views
0

可能重複:
What is this weird colon-member syntax in the constructor?
C++ initialization這是做什麼的? C++

我剛剛收到在C++程序中的頭文件,我想不通這行代碼的作用:

Card(Value faceValue=deuce, Suit suit = clubs): 
suit(suit), faceValue(faceValue) {} 

:是什麼意思,爲什麼用;替代它(我想我應該)破壞代碼?

對不起,這個問題的一般性,但有人可以解釋這兩行的目的嗎?

謝謝你的時間。

回答

2

這看起來像Card類的構造函數。 :之後的部分是初始化器列表,初始化成員變量(或父類的值,但我認爲這不適用於這種情況)。構造函數的主體是空的,因爲它需要做的每件事都在初始化器列表中完成。

+0

嗯...你能詳細闡述一下初始化列表嗎? –

+2

@ spryno724閱讀[this](http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-the-constructor) – Praetorian

+1

@PhilipWhitehouse初始化之間有一個很大的區別初始化列表中的成員,並在構造函數的主體內執行。做後者意味着對象首先被默認構造,然後在主體內分配一些值。 – Praetorian

1

初始化列表。這是在C++中初始化類構造函數的首選方法。

它被使用,因爲它允許類的const成員的初始化沒有編譯錯誤。

2

The:以下是初始化列表。使用它的原因而不是在構造函數體中分配成員變量是因爲如果你在構造函數體內部執行它,默認構造函數將被首先調用,然後複製構造函數或賦值運算符將被調用。通過使用初始化列表,您可以跳過第一步。