zoukankan      html  css  js  c++  java
  • sizeof求类的大小

    用sizeof求类的大小,http://blog.csdn.net/szchtx/article/details/10254007(sizeof浅析(三)——求类的大小),这篇博文给出了非常详尽的举例介绍。

    但是细心的话,你会发现一个小瑕疵,那就是对如下例子求sizeof(B),在VS下是16不是12!

    class A
    {
    public:
        int a;
    private:
        char b;
    };
    class B : public A
    {
    public:
        int d;
        char c;
    	
    };

    以下是我根据上机实验结果,总结的精华要点,希望从此以后不再为sizeof求类大小而烦忧:

    注:以下是针对32位编译器而言

    1. sizeof计算类的大小时,针对是该类型的实例,与该类型本身无关

    2. sizeof(空类)=1,这是由编译器决定的,因为实例化一个空类也需要在内存中占用空间

    3. 继承树中,不管是虚继承还是普通继承,同一层级中,不管虚多少次,只能算一次+4,不算的等同于注掉

    4. 继承树中,不管是虚继承还是普通继承,跨层级凡是发现虚函数同名的,只能算一次,不算的等同于注掉

    5. 虚继承,在继承树中每虚继承一次+4

    6. 虚继承,跨层级只要虚函数不同名,就各自分别算一次+4

    7. 普通继承,跨层级不管有多少虚函数,只能算一次+4,不算的等同于注掉

    8. 静态变量不在类大小计算范围之内

    9. 注意偏移对齐的问题,结果为4的整数倍,当int和doulbe在一起时向doulbe对齐,言外之意结果为8的整数倍

    学技术有感:有时候不能太过于专牛角尖,因为很多时候结果怎么样完全取决于编译器内部是如何实现的,理解其用意或者思想即可,对完全黑盒的东西只能瞎试或瞎猜,太过深究是没有意义的。

  • 相关阅读:
    过滤器和拦截器的区别
    sql注入
    JavaScript学习
    Linux简单学习
    HTML DOM学习
    Java集合
    java 多线程学习
    常用的OO设计原则
    JAVA设计模式一策略模式(Strategy Pattern)
    201521123071《Java程序设计》第1周学习总结
  • 原文地址:https://www.cnblogs.com/researcher/p/4548089.html
Copyright © 2011-2022 走看看