静态成员变量和静态成员函数

静态成员:在说明前面加了static关键字的成员。

普通成员变量每个对象有各自的一份,而静态成员变
量为所有对象共享。

sizeof 运算符不会计算静态成员变量

class CRectangle
{
private:
   int w, h;
   static int nTotalArea; //静态成员变量
   static int nTotalNumber;
  public:
   CRectangle(int w_,int h_);
   ~CRectangle();
   static void PrintTotal(); //静态成员函数
}; 

如何访问静态成员

  1. 类名::成员名
    CRectangle::PrintTotal();
  2. 对象名.成员名
    CRectangle r; r.PrintTotal();
  3. 指针->成员名
    CRectangle * p = &r; p->PrintTotal();
  4. 引用.成员名
    CRectangle & ref = r; int n = ref.nTotalNumber;

注意:

  • 在静态成员函数中,不能访问非静态成员变量,
    也不能调用非静态成员函数。
  • 静态成员函数不可具体作用于某个对象
  • 必须在定义类的文件中对静态成员进行初始化,在最开头也行?
  • 静态成员函数的本质是全局函数

你可能感兴趣的:(静态成员变量和静态成员函数)