我想不出在以下情況下會發生什麼:C++多重繼承
class MBase {
public:
MBase(int) {}
virtual char* vf() const = 0;
virtual ~MBase() {}
};
class D1 : public MBase { //NOT VIRTUAL!!!
public:
D1() : MBase(1) {}
char* vf() const { return "D1"; }
};
class D2 : virtual public MBase {
public:
D2() : MBase(2) {}
char* vf() const { return "D2"; }
};
class Bottom : public D1, public D2 {
public:
char* vf() const { return "Bottom"; }
}
Base* b = new Bottom();
在D1和D2從MBASE幾乎繼承了鑽石的原始定義,但這裏只有一個。我們是否仍然在Bottom對象中有兩個單獨的子對象,因此最後一行不能編譯,因爲編譯器不知道要使用哪個子對象?
你*嘗試了嗎? – 2012-04-14 17:04:51