首页 > 代码库 > class的大小
class的大小
3个问题:
sizeof一个空类是多大?为什么?编译器为什么这么做?
在这个类中添加一个virtual函数后再sizeof,这时是多大?为什么?
将这个类再virtual继承一个其它的空类,这是多大?为什么?
class A{};class B{ virtual void print() { cout << "B" << endl; }};class C : public A{ virtual void print() { cout << "C" << endl; }};int main(){ cout << sizeof(A) << endl; cout << sizeof(B) << endl; cout << sizeof(C) << endl; return 0;}
结论:
1.对象是存在于内存中的实体,编译器必须为其分配内存空间(C++编译器还为每个类默认生成了&取地址运算符函数)。所以如果是空类,编译器也会分配一个字节。
2.如果在空类中加入一个virtual函数后,类对象的内存空间为vfptr(指向虚函数表的指针),不再需要插入一个字节。
3.继承一个空类时,空类的“那一个字节”是不会存在派生类中的
class的大小
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。