我在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