這就是所謂的一個成員初始化列表。他們是C++語言的一部分。成員初始化列表允許您在類初始化期間初始化成員。他們的良好做法的一個原因是,他們允許您在分配不起作用時初始化const
成員。例如,以下類定義將不起作用,因爲const int member1
未使用值進行初始化,也不能將其分配給const int
,因爲const
使其成爲只讀。
class Game{
private:
const int member_var; //won't work, needs to be initialized
int member_var2;
public:
Game() {} //Game constructor
};
隨着初始化列表,你可以通過你的構造函數定義之後加入一個冒號(但括號之前定義的話)和初始化成員需要初始化const
成員一樣,這些和其他變量,無論是直接初始化(使用「()」)或統一初始化(使用「{}」)。要初始化多個成員,請用逗號分隔它們。
class Game{
private:
const int member_var;
int member_var2;
public:
Game(): member_var(1), member_var2(2) {}
//Uniform initialization is ": member_var{1}, member_var{2}"
};
在您的例子中,Game()
構造函數的類定義(可能是在其他.cpp文件)外通過Game::Game()
定義一個成員初始化列表。我猜_window
是一個帶有一個構造函數的類,它以sf::VideoMode(800,600)
和"SFML Title"
作爲參數。
這是一個很好的做法,它被稱爲[成員初始值列表](http://en.cppreference.com/w/cpp/language/initializer_list) – Danh