关于static的用法,网上有很多博客,很简单就不多说了。
#include<iostream>
using namespace std;
class One
{
public:
One(int x=0){ a=x;}
void fun()
{
static int b=0;//在函数里定义static变量
b++;
cout<<b<<endl;
}
private:
int a;
};
int main()
{
One one;//第一个One对象
one.fun();
one.fun();
One two;//这是第二个
two.fun();
/*
输出:
1
2
3
*/
//可以看出,b这个static变量是为这个类所共享。只要one改变了b,那two的b也会随之保持一致。
return 0;
}
再看下面的代码:
#include<iostream>
using namespace std;
class One
{
public:
One(int x=0){ a=x;}
static int s1;//不能再类内初始化
private:
int a;
static int s2;
};
int One::s1=0;//只能在类外初始化
int One::s2=0;
int main()
{
One one;
cout<<one.s1<<endl;
//cout<<one.s2<<endl;//这句代码去掉注释是错误的,s2是私有成员,不可以再类外访问
return 0;
}