数组
初学,大概是这样
class sample
{ static int n;
sample(){n+=1} }
main()
{ sample *p=new sample,s[4];}
cout<<n<<endl;}
为什么最后N是5?
[解决办法]
#include <iostream>
using namespace std;
class sample
{
public:
static int n;
sample()
{
n += 1;
}
};
int sample::n = 0;
void main()
{
sample *p = new sample, s[4];
cout << sample::n << endl;
}
[解决办法]
数组就是指针,s[4]就是你调用类4次
[解决办法]
因为n是静态成员变量,所有实例公用一份;
sample *p = new sample, s[4]; 会调用5此构造函数,所以sample::n等于5。
[解决办法]
static变量是属于类的,并不属于对象,在对象初始化之前static变量已经完成初始化,并只初始化一次,被所有类共享,所以每建立一个对象n都要+1.最后自然是5