たとえば、次のコードがあるとします。
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))
これはすべて正しいように見えますか?コンストラクター本体ですべてを行うよりもわずかに優れています。