zoukankan      html  css  js  c++  java
  • C++内存对象布局

    本章主要介绍了c++类中成员变量、函数对象的在内存中布局.

        当c++类中不包含virtual机制类的函数时,内部nostatic member被包含在每一个class object之中,就想c struct一样,而member function虽然含在class声明之内,却不出现在object之中,每一个non-inline function只会诞生一个函数体。

         c++内存上的布局以及存取时间主要的额外负担是由virtual引起的,包括:

    •   virtual function 机制 用以支持一个有效率的"执行期绑定"(runtime binding).
    •   virtual base class    用以实现"多次出现在继承体系中的base class,有一个单一而被共享的实体.
    class Point{
    public:
           Point(float xval);
           virtual ~Point();
           
           float x() const;
           static int PointCount();
    protected:
           virtual ostream& print(ostream& os) const;
           float _x;
           static int _point_count;
    };

    (1)c++对象模型

      内存布局

     一个对象需要多少内存才能表现一个class object的大小:

    •   nonstatic data members的总和大小
    •   加上任何由于alignment的需求而填补上去的空间.
    •   加上为了支持virtual而由内部产生的任何额外负担.

     

        

  • 相关阅读:
    2-7-配置iptables防火墙增加服务器安全
    2-6-搭建无人执守安装服务器
    2-4-搭建FTP服务器实现文件共享
    第一阶段连接
    在mfc中如何显示出系统时间
    关于const
    第三章类图基础
    算法分析的数学基础
    第十二章 派生类
    学好C++该看什么书呢?
  • 原文地址:https://www.cnblogs.com/sixue/p/4046168.html
Copyright © 2011-2022 走看看