在类中被static关键字修饰的成员称为静态成员,它属于所有用该类实例化出来的对象,不属于具体某个对象,存放在静态区,并且只会存在一份,特征如下:
- 静态成员必须在类外初始化
- 在类中声明时加上static,在类外初始化时无序加上static,只要指定类域即可
- 静态成员函数没有隐含的this指针,且不能访问非静态的成员
声明与定义
class A
{
private:
static int _a; //声明
};
int A::_a = 0; //初始化
调用
//通过类域直接调用
A::Print();
//通过该类实例化出的对象调用
A a;
a.Print();
如果只是单纯的只需调用的话,用匿名对象或许更好,匿名对象即没有名字的对象,它的生命周期(作用域) 也仅限于当前行,过了该行后自动调用其析构函数:
//通过匿名对象调用
A().Print();