静态成员:在说明前面加了static关键字的成员。
普通成员变量每个对象有各自的一份,而静态成员变
量为所有对象共享。
sizeof 运算符不会计算静态成员变量
class CRectangle
{
private:
int w, h;
static int nTotalArea; //静态成员变量
static int nTotalNumber;
public:
CRectangle(int w_,int h_);
~CRectangle();
static void PrintTotal(); //静态成员函数
};
如何访问静态成员
- 类名::成员名
CRectangle::PrintTotal(); - 对象名.成员名
CRectangle r; r.PrintTotal(); - 指针->成员名
CRectangle * p = &r; p->PrintTotal(); - 引用.成员名
CRectangle & ref = r; int n = ref.nTotalNumber;
注意:
- 在静态成员函数中,不能访问非静态成员变量,
也不能调用非静态成员函数。 - 静态成员函数不可具体作用于某个对象
- 必须在定义类的文件中对静态成员进行初始化,<v>在最开头也行?</v>
- 静态成员函数的本质是全局函数