【问题标题】:Do I have to write the same constructor for derived classes in C++? [duplicate]我是否必须为 C++ 中的派生类编写相同的构造函数? [复制]
【发布时间】:2016-12-30 21:12:49
【问题描述】:

我正在制作一个国际象棋游戏,我正在布置课程。有一个基本的 Piece 类,并分离 Rook、Bishop、Knight、Pawn、King 和 Queen 类来继承它是有意义的。构造函数需要的唯一参数是布尔“所有者”值(它将是基类的成员):玩家为 true,AI 为 false。我认为对象应该像这样实例化:

//create a Rook owned by the player
Rook exampleRook = new Rook(true);
//create a Knight owned by the AI
Knight exampleKnight = new Knight(false);

看来我必须在 each 派生类中做这样的事情:

Rook(bool owner) {
    this->owner = owner;
}

这似乎违反了继承的整个原则:在基类中编写一次代码,然后继承。我可能必须在基类中编写一个 setOwner() 函数,但在构造函数中设置所有者似乎更有意义,而不是在单独的函数中(可以再次调用)。

【问题讨论】:

  • 您的代码看起来像 Java。你确定它是C++?如果是,请搜索“继承构造函数”。
  • 1.继承构造函数,2. 成员初始化列表

标签: c++ inheritance


【解决方案1】:

可以将成员初始化放在基类构造函数的初始化列表中

Piece(bool _owner) : owner(_owner) {}

然后在派生类中只需传递给基类构造函数

Rook(bool owner) : Piece(owner) {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多