我理解基类的虚拟继承在多个派生类之间创建了一个公共(public)共享基类,从而解决了 DDD 问题。如果我的基类只有一个派生类,那么虚拟继承基类或非虚拟继承基类时有区别吗?基本上我试图理解查询中提供的解释 Is it possible to forbid deriving from a class at compile time?其中 Usage_lock 基类实际上是继承的,以防止从类 Usable 派生。如果我删除这个虚拟键,行为就会改变,即我能够从 Usable 派生子类。所以我想了解单继承场景中虚拟键造成的差异。
最佳答案
单个虚拟继承情况下的主要区别在于,只有最派生类调用虚拟继承基的构造函数,并且所有其他类都提供对构造类的引用(这发生在幕后)。
因此,在示例中,由于尝试进一步派生 Usable
将需要新类调用 Usable_lock
构造函数(它是私有(private)的),因此不可能从 Usable
派生的任何其他类。只允许 Usable
构造锁对象,因为它是锁的友元。
关于c++ - 单一虚拟继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373910/