2015-05-22 155 views
0

晚上好!C++:究竟是什麼「:」在這裏做?

我讀通過編程:原理和編程使用C++,我發現了這片的示例代碼,真正讓我感興趣的函數初始化過程中。對於一直在使用C++的C++程序員來說,如何使用這個函數初始化語法有幫助?它對你的工作流程是否有幫助,對程序員來說是否更易讀,還是隻是C++中另一種祕密方式?它有助於節目表演嗎?

我想知道有關它的更多一些,我無法找到使用我那可憐的谷歌技能它什麼。

class Year { 
static const int min = 1800; 
static const int max = 2200; 

public: 
class Invalid {}; //this thing throws an error when called 
Year(int x) : y(x) { if (x < min || max <= x) throw Invalid(); } //what is : ?? 
int year() { return y; } 

private: 
int y; 
}; 
+0

你問結腸做什麼,或者什麼初始化好? – Beta

+0

http://en.cppreference.com/w/cpp/language/initializer_list – user657267

+1

見http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-構造函數 – chris

回答

1

在這種情況下:是用於初始化值列表的語法。初始化程序列表允許調用類的元素的構造函數,而不調用默認構造函數然後分配給它們。

你可以重寫構造函數

Year(int x) : 
      ^Indicates start of initializer list 
    y(x) 
    ^^^ Initializes Y 
{ 
    if (x < min || max <= x) throw Invalid(); 
} 

你可以閱讀更多關於初始化列表here