对于静态数据成员来说不依赖于对象的实例化而依赖于类 所以他的初始化不再构造函数内
访问有两种方式:
1、通过类访问 类名::静态数据成员
2、通过实例化对象访问 实例化对象的名称.静态数据成员名称
静态成员函数不能访问正常的成员函数因为静态数据成员是随着类的产生而产生的 其他的成员是在类实例化的时候才产生的
注意事项:
静态数据成员必须单独初始化
静态成员函数不能调用非静态数据成员和非静态数据成员函数
静态数据成员只有一份,且不依赖对象而存在
#include<iostream>
using namespace std;
class Tank
{
public:
Tank(char code)
{
m_cCode=code;
s_iCount++;
cout<<"Tank"<<endl;
}
~Tank()
{
s_iCount--;
cout<<"~Tank"<<endl;
}
void fire()
{
cout<<"Tank--fire"<<endl;
}
static int getCount()
{
return s_iCount;
}
private:
char m_cCode;
static int s_iCount;
};
int Tank::s_iCount=0;
int main()
{
Tank *p=new Tank('A');
cout<<p->getCount()<<endl;
Tank *q=new Tank('B');
cout<<Tank::getCount()<<endl;
delete p;
cout<<Tank::getCount()<<endl;
delete q;
cout<<Tank::getCount()<<endl;
system("pause");
return 0;
}
注意不能对静态数据成员用const修饰哦 因为const是给this指针加修饰 而静态数据成员没有this指针哦