0
class Base {
public:
Base(){ }
virtual void Bfun1();
virtual void Bfun2();
};
class Derv : public Base {
public:
Derv(){ }
void Dfun1();
};
上面的定義和下面的定義有區別嗎?他們是一樣的嗎?如果不是兩者在功能上有什麼不同?虛擬繼承查詢
class Base {
public:
Base(){ }
void Bfun1();
void Bfun2();
};
class Derv : public virtual Base {
public:
Derv(){ }
void Dfun1();
};
typo ..閱讀構造函數爲public。 class base { public: Base(){} virtual void Bfun1(); virtual void Bfun2(); }; class Derv:public Base { Derv(){} void Dfun1(); }; 上面的定義和下面的定義有區別嗎?他們是一樣的嗎?如果不是兩者在功能上有什麼不同? class base { Base(){} public: void Bfun1(); void Bfun2(); }; class Derv:public virtual Base { Derv(){} public: void Dfun1(); }; – irappa 2011-05-28 23:14:55
簡答:是的,他們不一樣。長答案:讀你的書;) – 2011-05-28 23:17:54
閱讀建議:[什麼是「可怕的鑽石」?](http://www.parashift.com/c++-faq-lite/multiple-inheritance.html#faq-25.8)。 .. [[我應該使用虛擬繼承嗎?](http://www.parashift.com/c++-faq-lite/multiple-inheritance.html#faq-25.9) – Nawaz 2011-05-28 23:26:44