我希望有几种类型共享相同的实现,但在 C++ 中仍然是不同的类型。
为了用一个简单的例子来说明我的问题,我想为 Apples、Oranges 和 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 {};
但是,构造函数不是继承的,我必须重写它们。
是否有任何机制(类型定义、模板、继承......)可以让我轻松地拥有具有不同类型的同一个类?