1、有时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持联系。
2、静态数据成员、静态成员函数不与任何对象绑定在一起,静态成员函数不包含this指针,静态成员函数不能声明成const,而且也不能在static函数体内使用this指针。这一限制既适用于this的显式使用,也对调用非静态成员的隐式使用有效。
3、class Account{
public:
void calculate() {}
static double rate(){}
static void rate (double);
private:
std::string owner;
double amount;
static double interestRate;
static double initRate();
}
使用作用域运算符访问静态成员
double r;
r=Account::rate();
仍可以使用类的对象、引用和指针来访问静态成员:
Account ac1;
Account *ac2=&ac1;
r=ac1.rate();
r=ac2->rate();
成员函数不通过作用域运算符就可以直接使用静态成员。
4、可以在内部和外部定义静态成员函数,static声明必须在类的内部。
类的静态数据成员不是由构造函数初始化,必须在类的外部定义和初始化每个静态成员。
5、静态成员可以是不完全类型,而非静态不行
可以使用静态成员做默认实参,而非静态不行。