佚名通过本文主要向大家介绍了你对这句话的理解是,谈谈对这句话的理解,说说你对这句话的理解,对这句话的理解,我对这句话的理解是等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 这句话怎么理解?
描述:
解决方案1:
描述:
IUnknown并不是虚拟基类。IX和IY(两个接口)并不能按虚拟方式继承IUnknown,这是由于会导致与COM不兼容的vtbl。若IX和IY按虚拟方式继承IUnknown,那么IX和IY的vtbl中的头三个函数指向的将不是IUnknown的三个成员函数。
首先我觉得IUnknown本身就是个接口,里面的三个方法都是纯虚的,不存在什么类不类的问题,其次为什么IX和IY按虚拟继承方式继承IUnknown会使vtbl中头三个函数指向的将不是IUnknown的三个成员函数?IX和IY本身也是接口,应该怎么理解?
解决方案1:
C++语言的规范中只是规定了虚函数的行为,而并没有规定他的具体实现,所以C++规范是源码级的,而不是二进制级的.所以很难做到软件的各个部分之间的相互独立.软件复用也就很困难.COM的出现就是为了给软件复用创建一个二进制的规范.但COM技术作为对已有的C++语言的增补,用不能违反C++的规范,所以他的很多地方都是很蹩脚的.你提到的问题就是其中一个.这个问题是编译器相关的,不值得深究,如果你想知道,我可以给你举个例子.