Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我是否必须为C+;中的派生类编写相同的构造函数+;?_C++_Inheritance - Fatal编程技术网

C++ 我是否必须为C+;中的派生类编写相同的构造函数+;?

C++ 我是否必须为C+;中的派生类编写相同的构造函数+;?,c++,inheritance,C++,Inheritance,我在下国际象棋,我在布置课程。有一个基本类是有意义的,并且有单独的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 Knigh

我在下国际象棋,我在布置课程。有一个基本类是有意义的,并且有单独的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);
似乎我必须在每个派生类中执行类似的操作:

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

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

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

Piece(bool _owner) : owner(_owner) {}
然后在派生类中只传递给基类构造函数

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

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

Piece(bool _owner) : owner(_owner) {}
然后在派生类中只传递给基类构造函数

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

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