读书人

数组,该如何解决

发布时间: 2012-02-22 19:36:54 作者: rapoo

数组
初学,大概是这样
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

读书人网 >C++

热点推荐