- 静态成员变量:
- 所有对象共享同一份数据
- 类内声明、类外初始化
- 静态成员函数:
- 所有对象共享同一个函数
- 只能访问静态成员变量
示例如下:静态成员变量 - A
, 静态成员函数 - func
class 类名
{
public: // public 下的静态成员可以通过类名直接访问 (因为是共享的,不属于某一对象)
static int A; // [类内声明]、类外初始化
static int func()
{
// 只能访问静态成员变量,如 A
}
};
int 类名::A = 100; // 类内声明、[类外初始化]
- 常函数:
const
标识- 不可修改成员属性,除关键字
mutable
修饰的属性 - 常对象:声明对象前加
const
-> 只能调用常函数
- 不可修改成员属性,除关键字
class 类名
{
public:
int A;
mutable int B; // 关键字 `mutable` 修饰的变量
int func() const // 本质修饰的是 this 指针: const Person * const this
{
this->A = 100; // 错误!!! 不可修改成员变量
this->b = 100; // 正确!!! 除关键字 `mutable` 修饰的变量外
}
};