类中的静态变量可以先使用后定义吗?
在一个教程里看到下面的程序:
#include<iostream.h>
class sample
{
int n;
public:
sample(int i)
{
n=i;
}
void add()
{
s+=n;
}
static int s;
};
int sample::s=0;
void main()
{
sample a(2),b(5),c(8);
a.add();
cout<<"s="<<sample.s<<endl;
b.add();
cout<<"s="<<sample.s<<endl;
c.add();
cout<<"s="<<sample.s<<endl;
}
为什么先有
void add()
{
s+=n;
}
之后再定义
static int s;
在编译的时候不会出错?
另外为什么int sample::s=0;不能写成int sample.s=0;?什么情况下可以用::什么情况下不可以只能用.呢?