这就是所谓的一个成员初始化列表。他们是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