我希望有几种类型共享相同的实现,但在 C + + 中仍然是不同的类型。
为了用一个简单的例子来说明我的问题,我想为 Apple、 Orange 和 Bananas 创建一个类,它们都具有相同的操作和相同的实现。我希望他们有不同的类型,因为我想避免由于类型安全的错误。
class Apple {
int p;
public:
Apple (int p) : p(p) {}
int price () const {return p;}
}
class Banana {
int p;
public:
Banana (int p) : p(p) {}
int price () const {return p;}
}
class Orange ...
为了避免重复代码,我似乎可以使用一个基类 Fruit 并从中继承:
class Fruit {
int p;
public:
Fruit (int p) : p(p) {}
int price () const {return p;}
}
class Apple: public Fruit {};
class Banana: public Fruit {};
class Orange: public Fruit {};
但是,构造函数不是继承的,我必须重写它们。
是否有任何机制(typedef、模板、继承... ...)允许我轻松地使用不同类型的相同类?