略过一些代码,我注意到一些东西,老实说,我无法在构造函数中包围我
class Terrain
{
public:
Terrain(int movementCost,
bool isWater,
Texture texture)
: movementCost_(movementCost),
isWater_(isWater),
texture_(texture)
{}
... //More code
这是什么样的巫术?那些foo_(foo)
代表foo = foo_
吗?
答案 0 :(得分:2)
这是一个c ++初始化列表。 你几乎是对的,foo_(foo)相当于foo_ = foo;
当你有一个没有默认构造函数的成员变量时,这很有用。 如果没有此功能,则必须将其设为指针。
初始化也按照成员在类定义中声明的顺序执行,而不是它们出现的顺序(这应该与样式相同,但不一定)