C++对象模型和this指针
成员变量和成员函数分开存储
- 类内的成员变量和成员函数分开存储
- 再有非静态成员变量才属于类的对象
- 静态的成员变量不属于类的对象
- 空对象的类占用的内存空间是1个字节
空对象类和非空对象类对比
this指针:每一个非静态成员函数只会诞生一份函数实例,也就是多个同类型的对象共用一块代码,那么问题是:这一块代码是如何区分哪个对象调用自己呢,C++用this指针解决上述问题
- this指针指向被调用的成员函数所属的对象
- this指针隐含每一个非静态成员函数内的一种指针 无需定义
用途
- 形参和成员变量同名,用this指针来区分
- 非静态成员函数中返回对象,可用return *this
返回要用引用 不能直接用值 用值的方式是创建一个新的对象
空指针访问成员函数
C++空指针可以调用成员函数,但也要注意有没有用的this指针
cosnt修饰成员函数
常函数
- 成员函数加const后我们称为常函数
- 常函数内不可以修改成员属性
- 成员属性声明加关键字mutable后,在常函数中可以修改
常对象
- 声明对象前加const称为常对象
- 常对象只能调用常函数
this指针的本质也是指针常量