C++中类的sizeof

来源:互联网 发布:程序员的昵称 编辑:程序博客网 时间:2024/05/16 06:56
#include <iostream>using namespace std;#pragma pack(2)  class A{      int i;//4    union U{//14        char buff[13];          int i;      }u;//注意,这里是申明了一个union变量    enum{red, green, blue} color;//4 void foo() {}//0      typedef char* (*f)(void*);//0  int g(){int i;}//0};class B{B(){}//0virtual g(){}//4virtual f(){}//所有虚函数放在一张虚表中,指向虚表的指针的4字节};class C{};int main(){cout<<sizeof(A)<<endl;//8cout<<sizeof(B)<<endl;//4cout<<sizeof(C)<<endl;//1return 0;}


再看一个:

#include <iostream>using namespace std;class A {  public:      int b;      char c;  //注意地址对齐    virtual void print(){          cout<<"this is father's function!"<<endl;      }  };    class B : A {  public:      virtual void print(){          cout<<"this is children's function!"<<endl;      }  };  int main(void){      cout<<sizeof(A)<<","<<sizeof(A)<<endl; //12,12          return 0;  }
原创粉丝点击