C++中struct 和 class的sizeof大小

来源:互联网 发布:网络视频同步录制 编辑:程序博客网 时间:2024/05/23 13:54
//============================================================================// Name        : Sizeof.cpp// Author      : gwwu// Version     :// Copyright   : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>using namespace std;/* 一个struct的大小是它的所有成员大小的和, * 一般会为了提高执行效率,增加额外的字节对齐*/struct A {    int i[100];};/* 对象的基本规则之一是每个对象必须有一个唯一的地址, * 因此,无数据成员的结构总应当有最小的非零长度*/struct B {    void f();};void B::f() {}struct C {    //int a;    short b;    void c();};void C::c(){    cout << "I am c in C" << endl;}class D {    void d();};class E {    int e;    void efunc();};int main() {    cout << "sizeof struct A = " << sizeof(A) << " bytes" << endl; // prints !!!Hello World!!!    cout << "sizeof struct B = " << sizeof(B) << " bytes" << endl;    cout << "sizeof struct C = " << sizeof(struct C) << " bytes" << endl;    cout << "sizeof class D = " << sizeof(D) << " bytes" << endl;    cout << "sizeof class E = " << sizeof(E) << " bytes" << endl;    return 0;}

编译运行:

sizeof struct A = 400 bytessizeof struct B = 1 bytessizeof struct C = 2 bytessizeof class D = 1 bytessizeof class E = 4 bytes