本人在不久前的面试中,遇到求C++类大小的笔试题,该类有几个成员变量和函数.我将成员变量的字节数的总和加1作为类的大小,结果当然错误,工作当然也没得到.
  面试失败后,我上机测试了几个类的大小(如下所示),没有找出其中的规律.虽然C++类的大小是多少对编程并没影响(本人是这样认为的),但既然遇到了这个问题,就应该把它搞懂,是不是?所以向各位高手请教,拜托!
class A
{
public:
     int i;
};
class B
{
public:
     char ch;
};
class C
{
public:
     int i;
     short j;
};
class D
{
public:
     int i;
     short j;
     char ch;
};
class E
{
public:
     int i;
     int ii;
     short j;
     char ch;
     char chr;
};
class F
{
public:
     int i;
     int ii;
     int iii;
     short j;
     char ch;
    char chr
};
个类大小如下:
sizeof(A)=4;sizeof(B)=1;sizeof(c)=8;sizeof(d)=8;
sizeof(E)=12;sizeof(F)=20;   请问C++类的大小是怎样计算的?其成员函数的大小又怎样计算?

解决方案 »

  1.   

    我说的肯定不对,但是说说想法,我认为可以简单的把他们认为是一个结构,因为现在没有函数声明,对于结构,在内存中具有内存空洞现象
    struct a
    {
    int i;
    char c;
    };
    sizeof(a)=8;
    struct b
    {
    char i;
    char c;
    };
    sizeof(b)=2;
    ...
      

  2.   

    相同的类定义有可能在不同的编译器中大小也不相同。-- 不敢苟同,我认为对于不同的机器可能不同,在同一机器的不同编译器上是相同的,否则现在怎么制作dll。
      

  3.   

    可以在前面加入
    #pragma 1
    使得按一个byte对齐就可以了.
      

  4.   

    这样的问题我回答了不下5次了!去看看<<深入c++对象模型>>吧!
      

  5.   

    http://expert.csdn.net/Expert/topic/1219/1219109.xml?temp=.8924829