基本概念
静态成员:在说明前加了static关键字的成员
静态成员和普通成员的区别
如何访问静态成员
注意:
1.后三种访问方式叫做实例方法,它们仅仅是一种形式而已,不意味着这些静态成员属于或者作用于某个指定的对象!
2.建议使用第一种类方法的形式
关于静态成员的深入理解
代码实例
#include <bits/stdc++.h>
using namespace std;
class Rect
{
private:
int w, h;
static int TotalNumber;
static int TotalArea;
public:
Rect(int, int);//普通构造函数
Rect(const Rect &);//复制构造函数
~Rect(void);//析构函数
static void PrintTotal(void);
};
Rect::Rect(int _w, int _h)
{
w = _w;
h = _h;
TotalNumber++;
TotalArea += w * h;
}//有对象被初始化
Rect::Rect(const Rect &r)
{
w = r.w;
h = r.h;
TotalNumber++;
TotalArea += w*h;
}//有对象被初始化
Rect::~Rect(void)
{
TotalArea -= w * h;
TotalNumber--;
}//有对象消亡了
void Rect::PrintTotal(void)
{
cout << TotalNumber << ends << TotalArea << endl;
}
int Rect::TotalArea=0;
int Rect::TotalNumber=0;//必须对静态成员变量进行说明或者初始化,否则编译通过而链接不会通过
int main(void)
{
Rect r1(2, 3), r2(4, 5);
Rect r3(r2);
Rect *r4 = new Rect(6, 7);
delete r4;
Rect::PrintTotal();// 3 46
return 0;
}
注意:在静态成员函数中,不可以直接访问非静态成员变量,也不可以直接调用非静态成员函数,不过反过来是可以的