我在C++中需要很少的继承帮助。我有这样的代码:在C++中实现接口
class IBase {
public:
virtual long Dimensions() = 0;
};
class IShape : public IBase {
virtual long Area() = 0;
};
class Rectangle : public IShape {
private:
long x;
public:
long Dimensions() {return x};
long Area() {return x*x};
};
class Rhombus: public IShape {
private:
long x;
long fi;
public:
long Dimensions() {return x};
long Area() {return x*x*sin(fi)};
};
正如你所看到的,Dimensions()的实现对于这两个类都是相同的。现在我wan't做这样的事情:
class BaseImplementation : public IBase {
protected:
long x;
public:
virtual long Dimensions() {return x};
};
class Rectangle : public IShape, public BaseImplementation {
public:
long Area() {return x*x};
};
class Rhombus: public IShape, public BaseImplementation {
private:
long fi;
public:
long Area() {return x*x*sin(fi)};
};
可以插入实现方法尺寸()成菱形类从BaseImplementation的?这在某些版本的C++标准中是否受到支持? Thx。
@CharlesB这不是一般的坏主意分离接口继承和混合插件(缺省实现)。这是一种非常常见的技术。 – 2012-01-27 11:15:18
@ user1173308你的意思是“插入类的方法的实现”究竟是什么意思?你想重写'Rhombus'类的'Dimensions()'的行为吗? – CharlesB 2012-01-27 11:15:26
@KonradRudolph:谢谢,我不习惯这个。删除了评论,因为它是错误的。 – CharlesB 2012-01-27 11:16:54