1、静态成员变量
- 普通成员变量每个对象有各自的一份,而静态成员变量一共就一份,为所有对象共享。
- sizeof 运算符不会计算静态成员变量。
- 静态成员变量本质上是全局变量,哪怕一个对象也不存在,类的静态成员变量也存在。
- 在静态成员函数、非静态成员函数内部都可以访问静态成员。
- 在类内部声明,在类体外面定义并初始化。
class test
{
private:
int id;
public:
static int num;
test(int i)
{
id=i;
cout<<"constructor"<< id<<" called."<<endl;
}
~test()
{
cout<<"destructor"<< id<<" called."<<endl;
}
static void print()
{
cout<<num<<endl;
}
} ;
int test::num=0;
2、静态成员函数
- 普通成员函数必须具体作用于某个对象,二静态成员函数并不具体作用于某个对象
- 静态成员(静态成员变量、静态成员函数)不需要通过对象就能访问。
- 静态成员函数本质上是全局函数
- 设置静态成员的机制的目的是将和某些类紧密相关的全局变量和函数写到类里面,看上去像一个整体,易于维护和理解。
- 在静态函数中,不能访问非静态成员变量,也不能调用非静态成员函数。只能访问静态成员,调用静态函数。
3、访问静态成员
- 类名::成员名
- 对象名.成员名
- 指针->成员名
- 引用.成员名