static(静态存储)数据成员,在编译时就被创建和初始化,在程序结束时被销毁
并且在类中静态数据成员只有一个实例,对所有该类的对象共享

就如住在一个宿舍中的学生,共享这个宿舍的门牌号

一,定义静态数据成员

注意需要在类的外面对静态成员变量进行初始化!!!!
否者静态变量未初始化会报错 且不要放在.h文件中进行初始化,因为可能有多个cpp包含同一个.h文件

下面看一个实例:

#include <iostream>
using namespace std;
class computer
{
private:
float price;
//这里并没有进行初始化
static float total_price; //静态数据成员,表示总价格 向编译器描述如何为static成员分配内存
public:
computer(float p)
{
price=p;
total_price += p;
}
void print()
{
cout<<total_price;
}
~computer()
{
total_price-=price;
}
};
//注意!!!在类的外面进行静态变量的初始化为0 不能在类中进行初始化
//在这里对静态变量真正的分配内存
float computer::total_price=0;
int main()
{

computer p1(4561);
cout<<"购买一台电脑的价格为:";
p1.print();
computer p2(10000);
cout<<endl;
cout<<"购买两台电脑的价格为:";
p2.print();
cout<<endl;
cout<<"退掉电脑2后的价格:";
p2.~computer();
//使用p1.print()同时也可以查看此时价格
p1.print();
return 0;
}