多个虚拟继承是否涉及后期绑定,如虚函数的继承?

Pra*_*tic 4 c++ virtual-functions multiple-inheritance virtual-inheritance

与继承虚拟功能不同,解析虚拟继承似乎是枯燥无味的,但也许我只是没有创造力(狡猾?).

虚拟继承是否与虚函数的继承有关?具体来说,虚拟继承是否会引发后期绑定?我看不出任何理由.由于关键字过载,我只是怀疑.

我意识到标准没有指定虚拟继承的实现.我对大多数非假想的机器都感兴趣,但不完美.

rua*_*akh 5

正如虚函数涉及这些成员函数的后期绑定一样,我想你可以说虚拟继承涉及继承数据成员的后期绑定.每个子类的内存布局可能有很大不同,因此如果baseClassInstance->dataMember没有运行时类型信息,则无法解析表达式.virtual因此,两种用法都需要使用"vtable"进行特定于类的查找.

请参阅Edsko de Vries的"多重和虚拟继承的内存布局",了解GNU编译器集群(gcc)如何实现虚拟继承,包括对象布局,后果等.据我所知,其他编译器在关键点上是相似的.