我想有几种类型共享相同的实现,但在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 ...
Run Code Online (Sandbox Code Playgroud)
为了不复制代码,看起来我可以使用基类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 {};
Run Code Online (Sandbox Code Playgroud)
但是,构造函数不是继承的,我必须重写它们.
是否有任何机制(typedef,templates,inheritance …