Virtual Public Class用于表,以确保类的对象只继承一个子对象。
class L { /* ... */ }; // indirect base class
class B1 : virtual public L { /* ... */ };
class B2 : virtual public L { /* ... */ };
class D : public B1, public B2 { /* ... */ }; // valid
当我们不使用虚拟公共进行单一继承时,我们是否有副作用。例如,是
class L { /* ... */ }; // indirect base class
class B1 : virtual public L { /* ... */ };
class D : public B1 { /* ... */ }; // valid
与
相同class L { /* ... */ }; // indirect base class
class B1 : public L { /* ... */ };
class D : public B1 { /* ... */ }; // valid
?我的意思是,对于所有可能的情况,将父类设为虚拟是否安全?
答案 0 :(得分:7)
将父类虚拟化为“以防万一”同样安全。该标准没有规定如何实现虚拟继承,但可能会有轻微的性能损失。除非你写的是性能关键的东西,否则你不必担心它。
答案 1 :(得分:3)
http://www.phpcompiler.org/articles/virtualinheritance.html
类需要使用一个或多个虚拟指针进行扩展,并且对象中的简单属性查找现在需要通过虚拟表进行两次间接
与虚拟功能不同。