面向对象模型初探

成员变量和函数的存储

c++实现了“封装”,那么数据(成员属性)和操作(成员函数)是什么样的呢?

“数据”和“处理数据的操作(函数)”是分开存储的。

  c++中的非静态数据成员直接内含在类对象中,就像c struct一样。

  成员函数(member function)虽然内含在class声明之内,却不出现在对象中。

  每一个非内联成员函数(non-inline member function)只会诞生一份函数实例.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

class Person
{
public:
    int m_A;   //非静态成员变量,属于对象身上  打印结果为int的size  4
    void func() {}; //非静态成员方法 不属于对象身上       结果仍然是 4
    static int m_B;  //静态成员变量 不属于对象身上       结果      4
    static void func2() {}; //静态成员方法 不属于对象身上    结果  4
    double m_C;         //字节对齐 int占4字节 double占8字节 所以以double为准  结果是16
};

void test701()
{
    //空类的大小为1 每个实例的对象 都是独一无二的地址, char维护这个地址
    cout << "sizeof (Person) =" << sizeof(Person) << endl;   //当类中什么都没有时  结果  1
}

int main()
{
    system("Pause");
    return 0;
}

结论:非静态成员变量,才属于对象身上

原文地址:https://www.cnblogs.com/yifengs/p/15167478.html