为什么空类占一个字节?

转载 2016年06月01日 18:29:46

所谓类的实例化就是在内存中分配一块地址.(空类同样可以被实例化),每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.因为如果空类不隐含加一个字节的话,则空类无所谓实例化了(因为类的实例化就是在内存中分配一块地址。
继承这个类后这个类大小就优化为0了。这就是所谓的空白基类最优化。
转自:http://blog.csdn.net/imcdragon/article/details/6882875

C/C++—— C++中一个空对象为什么还要占用一个字节空间

C++中一个空对象为什么还要占用一个字节空间?
  • Linux_ever
  • Linux_ever
  • 2016年04月01日 12:49
  • 1277

枚举(enum)所占空间

枚举(enum) 枚举的定义: enum LOG_LEVEL { DBG, INF, WAR, ERR, FAT, ALL, ...
  • zz460833359
  • zz460833359
  • 2015年10月03日 15:36
  • 5236

java的引用类型所占用的内存空间

转:http://blog.sina.com.cn/s/blog_605f5b4f0100qt2t.html Question:JAVA中的引用的内存分配大小是多少? 如,我声明了一个对象,它...
  • uudou
  • uudou
  • 2015年08月14日 15:18
  • 4376

一个空类,默认被填充了些什么?

定义一个空的C++类,例如 class Empty { } 一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去...
  • ghgui008
  • ghgui008
  • 2014年07月16日 21:35
  • 543

1. 一个空类编译器默认产生4个函数

1、一个空类编译器默认产生4个函数: 默认构造函数、析构函数、拷贝构造函数、赋值函数。 这些函数都是public,且是内联函数。 以string类为例,为不引起重命名改为Mystring(也可以使用别...
  • suimenghuashi
  • suimenghuashi
  • 2015年01月03日 23:19
  • 398

一个空类被编译器编译后产生了哪些默认函数

一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写  class A{};  编译器处理后,就相当于:  c...
  • ZLhy_
  • ZLhy_
  • 2012年12月07日 22:15
  • 2467

一个空类被编译器编译后产生了哪些默认函数

一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写  class A{};  编译器处理后,就相当于:  cla...
  • hubaolin
  • hubaolin
  • 2013年01月07日 14:59
  • 313

空类所占内存的大小

成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,类所占内存的大小不包括成员函数的大小,虚拟...
  • JUST_DO_1122
  • JUST_DO_1122
  • 2017年12月21日 14:05
  • 28

类(空类/虚基类等)占内存的空间

一、真空类 class CNull { }; 长度:1 内存结构: ?? 评注:长度其实为0,...
  • misasagi_inori
  • misasagi_inori
  • 2013年06月17日 15:46
  • 372

c++空类所占内存大小问题

先看一个例子 #include using namespace std; class a {}; class b{}; class e{ public: void func1(); v...
  • zhujun007007
  • zhujun007007
  • 2013年12月27日 15:49
  • 713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为什么空类占一个字节?
举报原因:
原因补充:

(最多只允许输入30个字)