【发布时间】:2020-01-04 09:00:04
【问题描述】:
class A{
virtual void a();
};
class B : A{
virtual void a();
};
class C{
virtual void a();
};
class E : A, C{
virtual void a();
};
int main(){
std::cout << (sizeof(B)) << "\n"; // 4
std::cout << (sizeof(C)) << "\n"; // 4
std::cout << (sizeof(E)) << "\n"; // 8
}
在 32 位系统 linux 中
为什么sizeof(B)和sizeof(C)都是4
对于C类,它有一个虚函数,所以在C类中隐藏了一个虚拟指针,它是4字节的
但是为什么B类的大小也是4。我认为B类中存在两个指针,一个是B本身的,因为B类有一个虚函数,一个是A的。
那么 E 也有同样的问题?
感谢任何帮助
【问题讨论】:
-
您的代码示例中有很多拼写错误,导致无法编译。我们为您解决了这个问题,但是当您在这里发帖时应该更加准确:-)
标签: c++ virtual-table