成员变量和成员函数分开处理

C++面向对象模型初探


成员变量和成员函数分开处理

C++实现了“封装”,那么数据(成员属性)和操作(成员函数)是什么样呢?
“数据”和“处理数据的操作(函数)”是分开存储的。
    1. C++中的非静态数据成员直接内涵在类对象中,就像 C struct一样。
    2. 成员函数(member function)虽然内涵在class声明之内,却不出现在对象中。
    3. 每一个非内联成员函数(non-inline member function)只会诞生一份函数实例。


空类的大小为 1 :


    每一个实例的对象都有 独一无二的 地址,内部有一个 char 维护这个地址。

class Person7 {
public:
    int m_A;//非静态成员变量,属于对象身上
    void func() {};//非静态成员函数,不属于对象身上
    static int m_B;//静态成员变量,不属于对象身上
    static void func2() {};//静态成员函数,不属于对象身上
    double m_C;//非静态成员变量 字节对齐 16字节 
};

void test0007() {
    cout << "test0007()" << endl;
    cout << "sizeof(Person7)=" << sizeof(Person7) << endl;//1
}

#pragma pack(1) 加上 12 不加 16


结论:


    非静态成员变量,才属于对象身上。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值