【发布时间】:2014-08-21 05:39:17
【问题描述】:
我有一个类 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++ 中做这样的事情?
【问题讨论】:
-
在 C++(11) 中,继承构造函数意味着能够调用基类的构造函数来构建派生对象。在这里,您只想在派生构造函数中调用特定的基本构造函数,非常标准的事情...
-
@user3316633:另外,请注意
~Tile()应该被声明为虚拟的。有关原因的详细信息,请参阅this question。 -
@Edward 仅在您打算使用多态性时使用
标签: c++ inheritance constructor