说的是这个吗:http://en.wikipedia.org/wiki/Thunk_%28programming%29uraj (Tempusfugit) 在 ta 的帖子中提到:两年不写C++,很多东西都不会了,而且当年学的课程也没怎么讲多继承的问题。假设有类A同时公有继承类B和类C,而B和C同时有虚函数,因此A应该同时有B和C的虚函数表。现在问题是,当A被一个C类型的指针引用并调用虚函数时,如何决定A类对象的虚函数表位置?因为编译的时候没有关于A和B的信息,所以是不是有可能使B的虚函数表和C的发生混淆?C++如何解决这个问题?
所以Java不让多继承了……uraj (Tempusfugit) 在 ta 的帖子中提到:两年不写C++,很多东西都不会了,而且当年学的课程也没怎么讲多继承的问题。假设有类A同时公有继承类B和类C,而B和C同时有虚函数,因此A应该同时有B和C的虚函数表。现在问题是,当A被一个C类型的指针引用并调用虚函数时,如何决定A类对象的虚函数表位置?因为编译的时候没有关于A和B的信息,所以是不是有可能使B的虚函数表和C的发生混淆?C++如何解决这个问题?
我理解错你意思了……是在方法调用的时候会用static_cast将变量指针进行偏移,将A的一个对象分别作为B/C类的对象进行方法调用之前会偏移指针使得vtable在对象指针的固定偏移量上uraj (Tempusfugit) 在 ta 的帖子中提到:两年不写C++,很多东西都不会了,而且当年学的课程也没怎么讲多继承的问题。假设有类A同时公有继承类B和类C,而B和C同时有虚函数,因此A应该同时有B和C的虚函数表。现在问题是,当A被一个C类型的指针引用并调用虚函数时,如何决定A类对象的虚函数表位置?因为编译的时候没有关于A和B的信息,所以是不是有可能使B的虚函数表和C的发生混淆?C++如何解决这个问题?
怎么动态加载?C++强类型的啊.uraj (Tempusfugit) 在 ta 的帖子中提到:那如果A是动态加载的会不会出问题?static_cast应该是将A对象地址赋给C类型指针时编译器自动调用的。如果A是动态加载的那么代码里就不会出现C*c_ptr=obj//objisaninstanceofclassA这样的语句了。这时候还有static_cast的效果么?
多继承和模板是c++两个潘多拉的盒子uraj (Tempusfugit) 在 ta 的帖子中提到:两年不写C++,很多东西都不会了,而且当年学的课程也没怎么讲多继承的问题。假设有类A同时公有继承类B和类C,而B和C同时有虚函数,因此A应该同时有B和C的虚函数表。现在问题是,当A被一个C类型的指针引用并调用虚函数时,如何决定A类对象的虚函数表位置?因为编译的时候没有关于A和B的信息,所以是不是有可能使B的虚函数表和C的发生混淆?C++如何解决这个问题?