2012-11-26 86 views
0

可能重複:
What is this weird colon-member syntax in the constructor?構造函數設置?

我想明白這是什麼樣的代碼意味着

說我有這個

class OptionStudent: public Student // derived class from Student class 
{ 
    public: 
     explicit OptionStudent(const std::string id = "12345678", 
           const std::string first = "someone") 
     : Student(id, first) 
     { 
      count_++; 
     } 
} 

那是什麼在「某人」之後冒號):< - pa rt叫或意味着這個構造?
我知道構造函數可能有點不正確,但我不知道這是叫什麼。我只是從教練在教學板上寫的內容抄錄了筆記,並不理解它。
與類或對象記住某事有關嗎?

+0

這是一個初始化列表。 – rightfold

回答

1

這是會員initialization list。在這種情況下,它以idfirst作爲參數調用基類的構造函數。它也可以爲你班級的非數據成員(如果有的話)提供初始值。

請注意,Student(id, first);之後的分號是語法錯誤,需要刪除。

+0

啊謝謝!是的,它應該是一個逗號,我剛剛意識到,在我的筆記爲更多的成員,進入其他構造函數的習慣的進一步元素。將分號放在習慣之外。我沒有知道它被稱爲初始化列表謝謝。 –

0

它被稱爲「初始化列表」。請參閱以下文章"Understanding Initialization Lists in C++"

基本思想是,當您在{之後輸入構造函數的代碼時,您應該將所有成員初始化爲作爲參數或默認傳遞的值。

使用初始化列表,您也可以直接將參數傳遞給基類!這是正在發生的事情例如,在你所描述的:

  • 第一,無論是idfirst被設置爲使用default parameter value一些值。
  • 秒,這些值用於初始化基類Student類。

當然可以傳遞不同的值作爲OptionStudent自變量,這些值將用於初始化Student

相關問題