博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中一些类和数据结构的大小的总结
阅读量:6829 次
发布时间:2019-06-26

本文共 1784 字,大约阅读时间需要 5 分钟。

针对class,虚函数等情况写了一些代码测试。

#include 
class A {};class B {public: void f(); void g();};class C {public: void f(); void g();private: int a;};class D {public: virtual void f();};class E: public D {private: int a;};class F{private: int a;};class G {public: virtual void f();         virtual void g();         virtual void h();};class H: public G {private: int a;};class I: public G {};class J: public I {};class K {public: virtual void f(); virtual void g();private: int a;};class L {public: virtual void f(); virtual void g();private: int a; int b;};class M {public: virtual void f(); virtual void g();private: int a; int b; int c;};int main(int argc, char ** argv) { printf( "A: %d, B: %d, C: %d, D: %d, E :%d, F: %d, G: %d, " "H: %d, I: %d, J: %d, K: %d, L: %d, M: %d, " "int size: %d, long size: %d, double size: %d.\n", sizeof(A), sizeof(B), sizeof(C), sizeof(D), sizeof(E), sizeof(F), sizeof(G), sizeof(H), sizeof(I), sizeof(J), sizeof(K), sizeof(L), sizeof(M), sizeof(int), sizeof(long), sizeof(double));}

运行结果:

[sizeTest]$ g++ -o sizeTest sizeTest.cpp [sizeTest]$ ./sizeTest A: 1, B: 1, C: 4, D: 8, E :16, F: 4, G: 8, H: 16, I: 8, J: 8, K: 16, L: 16, M: 24, int size: 4, long size: 8, double size: 8.

总结如下:

A: 空类占用1字节

B: 成员函数不占空间,所以仍然1字节

C: private变量仍然占用空间,int为4

D: 虚函数(表)占用1个long的大小,为8字节

E:变量排在虚函数表前面,所以要对齐,一共16字节

F: 没有成员函数,只有成员变量,也是int的4字节

G:多个虚函数不增加空间大小

H:与E一样的效果

I: 虚函数继承不增加大小

J: 多次继承也不增加

K,L,M:检验对齐的效果

long和double的size都为8,int为4.

转载于:https://www.cnblogs.com/charlesblc/p/5437340.html

你可能感兴趣的文章
Struts2 中action之间的跳转(分享)
查看>>
HDU4707:Pet(DFS)
查看>>
html标签页图标
查看>>
C# list 新用法
查看>>
Android 获取控件相对于屏幕位置
查看>>
DNGuard Enterprise v2.80 released
查看>>
WPP
查看>>
C# GetSchema Get List of Table 获取数据库中所有的表名以及表中的纪录条数的方法
查看>>
PySide教程:“.NET研究”第一个PySide应用
查看>>
winrar自解压释放路径详解
查看>>
图像开运算+闭运算+腐蚀+膨胀
查看>>
poj-1324 Holedox Moving **** [转]
查看>>
深入foreach工作方式
查看>>
UIView 进行各种动画展示及其用法解释
查看>>
公布2012年5月赛CSDN算法达人赛试题及参考答案
查看>>
Mysql ON子句和USING子句
查看>>
linux杂谈
查看>>
类型、值和变量
查看>>
UIImage+Scale
查看>>
Linux sed 替换第一次出现的字符串
查看>>