C++ C++;继承构造函数
我有一个类,C++ C++;继承构造函数,c++,inheritance,constructor,C++,Inheritance,Constructor,我有一个类,Tile,它有一个带有Color对象参数的构造函数: class Tile { public: static const int size = 32; Tile(); Tile(Color &color); void render(int x, int y); Color getColor(); ~Tile(); private: Color _color; }; 然后我有一个子类,TileGrass,它继承了
Tile
,它有一个带有Color
对象参数的构造函数:
class Tile
{
public:
static const int size = 32;
Tile();
Tile(Color &color);
void render(int x, int y);
Color getColor();
~Tile();
private:
Color _color;
};
然后我有一个子类,TileGrass
,它继承了Tile
:
class TileGrass : public Tile
{
public:
TileGrass();
~TileGrass();
};
现在的问题是TileGrass
需要用颜色参数继承Tile
构造函数。但是,TileGrass
对象已经知道它需要为超类提供什么颜色,所以我不想在创建新的TileGrass
对象时传入color
对象。在Java中,我可以执行以下操作:
public class TileGrass extends Tile {
public TileGrass() {
super(color object);
}
}
我如何在C++中做这样的事情?
< p>只需调用初始化列表中的相关基类构造函数:class TileGrass : public Tile
{
public:
TileGrass() : Tile(some_color)
{
// ....
}
~TileGrass();
};
在C++(11)中,继承构造函数意味着能够调用基类的构造函数来构建派生对象。在这里,您只需要在派生构造函数中调用一个特定的基构造函数,这是非常标准的…@user331633:另外,请注意,
~Tile()
应该声明为virtual。有关原因的详细信息,请参阅。@Edward仅当您计划使用多态性时,我相信这实际上在ISO标准中也被称为继承构造函数。@TheFloatingBrain继承构造函数指的是另一种东西。例如,使用Tile::Tile
可以让您构建TileGrass t(某种颜色)代码>无需声明和定义TileGrass(Color&)
@TheFloatingBrain See@Drop我忘了,谢谢:-)@juanchopanza谢谢我有点忘了:-)