单个虚拟继承

ira*_*ppa 4 c++ virtual-inheritance

我知道基类的虚拟继承在多个派生类之间创建了一个公共共享基类,从而解决了DDD问题.如果我的基类只有一个派生类,那么当我虚拟地或非虚拟地继承基础时会有区别吗?基本上我试图理解查询中提供的解释是否有可能禁止在编译时从类派生?其中,Usage_lock基类是虚拟继承的,以防止从类Usable派生.如果我删除此虚拟键,行为会更改,即我可以从Usable派生子类.所以我想了解单继承场景中虚拟键的差异原因.

Dav*_*e S 5

单个虚拟继承案例的主要区别在于,只有派生程度最高的类才会调用虚拟继承库的构造函数,并且所有其他类都提供对构造类的引用(这发生在幕后).

因此,在该示例中,因为尝试进一步派生Usable将需要新类来调用Usable_lock构造函数(它是私有的),所以不可能从中派生任何其他类Usable.只Usable允许构造锁对象,因为它是锁的朋友.