C++ 对象模型 | 关于对象

一、C++ 对象模型

1、对象内存布局

在C++中,有两种数据成员:staticnonstatic,以及三种成员方法staticnonstaticvirtual,下面从虚函数、非虚函数、静态成员变量、非静态成员变量等维度来分析,类对象的内存布局。例如:下面定义一个Point类,包含前面四种类型的成员

#include 
using namespace std;

class Point
{
public:
    Point(double val);
    virtual ~Point();         // virtual function numbers
    double GetPoint();        // notstatic function numbers
    static int PointCount();  // static function numbers
private:
    double m_x;           // notstatic data numbers
    static int m_count;   // static data numbers
};

int Point::m_count = 0;

Point::Point(double val):m_x(val) {}
Point::~Point() {}
double Point::GetPoint(){ return m_x; }
int Point::PointCount(){ return m_count; }

int main()
{
    Point pt(10.0);
    cout << sizeof(pt) << endl;  // 输出结果:16
    return 0;
}

一个实例对象中包含非静态数据成员虚表指针以及为对齐而必需的填充静态成员变量函数独立于单个实例化对象

你可能感兴趣的:(C++,对象模型,c++,java,开发语言)