c++问题,求解释每一步的意思。。
#include<iostream>usingnamespacestd;classCDummy{public:staticintn;CDummy(){n++;};~CDu...
#include<iostream>
using namespace std;
class CDummy
{
public:
static int n;
CDummy(){n++;};
~CDummy(){n--};
};
int CDummy::n=0;
int main()
{
CDummy a;
CDummy b[5];
CDummy *c=new CDummy;
cout<<a.n<<endl;
delete c;
cout<<CDummy::n;
cin.get();
cin.get();
}
//求解释每一步的意思。。还有结果为7的原因 展开
using namespace std;
class CDummy
{
public:
static int n;
CDummy(){n++;};
~CDummy(){n--};
};
int CDummy::n=0;
int main()
{
CDummy a;
CDummy b[5];
CDummy *c=new CDummy;
cout<<a.n<<endl;
delete c;
cout<<CDummy::n;
cin.get();
cin.get();
}
//求解释每一步的意思。。还有结果为7的原因 展开
展开全部
首先,必须明白,凡是被static修饰的变量都会永久保存程序结束前的每一次更改,并且其在内存中是唯一的。
然后,代码创建了一个CDummy类,并在该类中声明了一个静态(static)的成员变量n,然后定义了构造函数CDummy()和析构函数~CDummy()。构造函数将在创建对象时被调用,析构函数在删除对象时调用。int CDummy::n=0;讲n初始化为0(这是不必要的,静态变量默认初始化为0,但是对每一个变量进行初始化时良好的编程习惯。)
主函数先创建了一个CDummy类的对象a,那么此时构造函数被调用,即n++,执行完该语句后n为1;接着主函数创建了一个对象数组b[5],即创建了5个CDummy类的对象,n++执行5次,此时n为6;同理,CDummy *c=new CDummy;用另一种方式创建了对象c,n再加1,为7,所以第一个输出是7,然后c被删除,析构函数被调用,n--,你变为6,第二个输出是6。
最后两句是为了防止执行时窗口一闪而过。一句就够了
然后,代码创建了一个CDummy类,并在该类中声明了一个静态(static)的成员变量n,然后定义了构造函数CDummy()和析构函数~CDummy()。构造函数将在创建对象时被调用,析构函数在删除对象时调用。int CDummy::n=0;讲n初始化为0(这是不必要的,静态变量默认初始化为0,但是对每一个变量进行初始化时良好的编程习惯。)
主函数先创建了一个CDummy类的对象a,那么此时构造函数被调用,即n++,执行完该语句后n为1;接着主函数创建了一个对象数组b[5],即创建了5个CDummy类的对象,n++执行5次,此时n为6;同理,CDummy *c=new CDummy;用另一种方式创建了对象c,n再加1,为7,所以第一个输出是7,然后c被删除,析构函数被调用,n--,你变为6,第二个输出是6。
最后两句是为了防止执行时窗口一闪而过。一句就够了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询