c++中类的大小计算

xiaoxiao2025-11-08  5

#include<c++/4.8.2/iostream> using namespace std; class A { int a; };//sizeof(A) 4 class B //静态数据 { int a; static int b; };//4,静态成员存储在静态区,不影响类的大小。 class C //虚函数 { virtual void func(); virtual void fun(); // int a; };//8 有虚函数时,会有一个指向虚函数表的指针vptr,视系统位数而定,64位系统下为8, //而虚函数的个数则不影响此指针的大小。 class D //普通成员函数 { void fun1(); void fun2(); };//1 类的大小与其构造函数、析构函数以及其他成员函数无关。 class E //内存对齐 { int a; char b; };// 8 内存对齐 class F:public E //普通继承 { int b; };// 12 普通继承是基类数据成员+本身数据成员大小 class G:virtual public E //虚继承 { int b; };// 24 派生类自身成员大小4 +基类数据成员大小8+ 虚拟指针大小8 +内存对齐 // 继承多个虚基类,也只有一个指针vptr class H //空类 { };// 1 空类为1,编译器的实例化,每个实例在内存中都是独一无二的,所以空类就隐含一个字节 int main() { cout<<sizeof(A)<<endl; cout<<sizeof(B)<<endl; cout<<sizeof(C)<<endl; cout<<sizeof(D)<<endl; cout<<sizeof(E)<<endl; cout<<sizeof(F)<<endl; cout<<sizeof(G)<<endl; cout<<sizeof(G)<<endl; return 0; }

转载请注明原文地址: https://www.6miu.com/read-5039302.html

最新回复(0)