[問題] Virtual base class (diamond inheritance)
C++ 新手
想問有關 Virtual base class 的問題
在所謂的 diamond inheritance 關係中
如果這樣
class Base {};
class Derived1 : public Base {};
class Derived2 : public Base {};
class Multi : public Derived1, public Derived2 {};
以下這樣是不允許的
Base * ptr = new Multi;
一定要 宣告成virtual
class Base {};
class Derived1 : virtual public Base {};
class Derived2 : virtual public Base {};
class Multi : public Derived1, public Derived2 {};
但是為什麼?
網路上寫的的解釋我不是很能接受
說如果不宣告成 virtual base class
什麼這樣 Multi 會有兩個 Base 的 objects
pointer ptr 不知道要指到哪一個!
這樣的解釋不知道是不是我誤會
但我不是很理解
當我 new 一個 Multi 的時候 不是就只有一個object 嗎
--
PLUR
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 85.180.24.118
推
03/13 01:38, , 1F
03/13 01:38, 1F
→
03/13 01:39, , 2F
03/13 01:39, 2F
推
03/13 17:26, , 3F
03/13 17:26, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章