静态成员
静态成员就是在成员变量和函数前面加入关键词 static,称为静态成员
静态成员分为:
静态成员变量
- 所有对象共有一份数据
- 在编译阶段分配内存
- 类内声明类内初始化
静态成员函数
- 所有对象公用一个函数
- 静态成员函数只能访问静态成员对象
C++对象模型和 this 指针
成员变量和成员函数分块储存
在 C++中类内的成员变量和成员函数是分开储存的 只有非静态成员变量才属于类的对象上
this 指针
通过上面我们知道在 C++中成员变量和成员函数是分开存储的
每一个静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会改用一块代码
那么问题是:这一块代码怎么区分哪个对象调用自己呢?
C++通过提供一种特殊的对象指针————this
指针来解决上述问题. this 指针指向被调用的成员函数所属的对象
this 指针是隐含每一个非静态成员函数的一种指针
this 指针不需要被定义,直接使用就行
this 指针的用途:
- 当形参和成员变量同名时,可用 this 指针区分
- 在类的非静态成员中返回对象本身,可以用
return *this
空指针访问成员函数
C++中的空指针也是可以调用成员函数的,但是也要注意有没有用到this
指针
如果用到 this 指针,需要加以判断代码的健壮性
const
常函数
- 成员函数后面加 const 后我们称为这个函数的常函数
- 常函数内不可以修改成员属性
- 成员属性声明时加上关键词 mutable,常函数依然可以访问
常对象
- 声明对象前加 const 称该对象为常对象
- 常对象只能调用常函数