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的原因
展开
 我来答
碧血归邪
2013-07-17 · TA获得超过401个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:105万
展开全部
首先,必须明白,凡是被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。
最后两句是为了防止执行时窗口一闪而过。一句就够了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式