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