虚继承和虚函数就如java和javascript的关系。
虚继承的类内存结构和正常继承的类内存结构有很大不同。
虚继承解决菱形继承中多个相同基类二义性问题。
例如,B继承A,C继承A,D继承B和C,则在D中有两份A,分别来自B和C。
当执行基类A函数时,就会出现二义性。
一种解决方法为,使用类命名空间,例如B::a()和C::a()区分。
另一中解决方法为,使用B虚继承A,C虚继承A,则D中只有一份A实例。
虚继承和虚函数就如java和javascript的关系。
虚继承的类内存结构和正常继承的类内存结构有很大不同。
虚继承解决菱形继承中多个相同基类二义性问题。
例如,B继承A,C继承A,D继承B和C,则在D中有两份A,分别来自B和C。
当执行基类A函数时,就会出现二义性。
一种解决方法为,使用类命名空间,例如B::a()和C::a()区分。
另一中解决方法为,使用B虚继承A,C虚继承A,则D中只有一份A实例。