例如,假设我有以下代码;
class Foo
{
public:
Foo(int x) : _foo(x)
{
}
private:
int _foo;
protected:
std::string _bar;
};
class Bar : public Foo
{
public:
Bar() : Foo(10), _temp("something"), _bar("something_else")
{
}
private:
std::string _temp;
};
int main()
{
Bar stool;
}
代码没有运行,因为 _bar 属于 Foo 类并且它似乎不知道它存在,所以这不是你将要如何去做的吗?或者你会在 Foo 的构造函数中有 _bar 吗?这会起作用,但如果 _bar 并不总是必须被分配一些东西怎么办?
编辑:下面是我使用的真实代码;
Entity::Entity(GameState *state, bool collidable)
:_isLoaded(false), _state(state), alive(true), collidable(collidable), name(entityDetault)
{
}
Entity::Entity(GameState *state, bool collidable, entityName _name)
:_isLoaded(false), _state(state), alive(true), collidable(collidable), name(_name)
{
}
然后子类将使用此构造函数;
Player::Player(GameState *state)
: Entity(state,true,entityName::entityPlayer), health(100),bulletSpeed(600),_colour(sf::Color(128,255,86,255))
现在这一切看起来都正确吗?比在构造函数主体中完成所有操作要好一些。