当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

关于结构的size和class的size

    这个东西让我载了跟头;一定要弄明白;结构的size和class的size;

    关于sizeof对结构类型的尺寸计算:

    对结构整体求值结果与对结构成员分别求值的和不等;

    这是由于编译器对结构进行存储空间分配时作内存对齐引起的;

    struct thestruct{

    double ddb;

    char  chb;

    int    intb;

    };

    这个结构在32位intel平台用MS VC6编译后求值为16;

    在32位sparc平台用SunStudio 的cc编译后也是16;

    struct thestruct{

    char  chb;

    double ddb;

    int    intb;

    };

    这个结构在32位intel平台用MS VC6编译后求值为24;

    在32位sparc平台用SunStudio 的cc编译后也是24;

    看来对齐规则是相同的;


    我找了一个别人总结的对齐规则;

    第一,就是结构中每个成员的存放地址相对于结构起始地址的偏移量,必须是该成员实际尺寸的倍数;

    第二,就是结构体整体的尺寸必须是最大成员尺寸的倍数;

    补进去的空间闲置不用;

    //============================================================

    sizeof对类的尺寸计算:

    刚试过了;

    这就和struct一样,仅仅是成员函数要算一个指针,32位机上面增加4字节;

    我只在sparc上试过,intel上没试;

    另外static类型的成员尺寸不算在内,对类的尺寸没任何影响;

    虚函数也是有二进制实现的,当然也算在内;今天被人忽悠得不自信了,竟然没敢说这个事;

    不过有件事还是郁闷,就是纯虚函数;这种东西没有二进制实现,我试验的结果是它也不影响类尺寸;

    但是纯虚类本身不能实例化,算出来有啥用呢;

相关内容
赞助商链接