【发布时间】:2011-03-20 11:28:05
【问题描述】:
我对 vptr 和内存中对象的表示有点困惑,希望你能帮助我更好地理解这件事。
考虑
B继承自A并且都定义了虚函数f()。从我了解到的 B 类对象在内存中的表示形式如下所示:[ vptr | A | B ]以及vptr指向的vtbl包含B::f()。我还了解到,将对象从B转换为A除了忽略对象末尾的B部分外,没有任何作用。这是真的吗?这种行为是不对的吗?我们希望A类型的对象执行A::f()方法而不是B::f()。系统中有
vtables作为类数吗?从两个或多个类继承的类的
vtable会是什么样子? C的对象在内存中如何表示?与问题 3 相同,但具有虚拟继承。
【问题讨论】:
标签: c++ multiple-inheritance vtable virtual-inheritance vptr