帮忙做一下这道题,我觉得好难的

GC80 2003-06-25 10:04:03
#include <iostream.h>

int NUM = 85;

class X
{
private:
static iTotal;
public:
X()
{++iTotal;};
~X()
{--iTotal;};
static void Set(int i)
{iTotal = i;};
static int GetCount()
{return iTotal;};
};
int X::iTotal = NUM %10 +1;

class Y
{
private:
static X x1;
static X* p;
X x2;
public:
int XCount()
{return x1.GetCount();};
void CreateX(int n)
{p = new X[n];};

void Destroyx()
{ delete[] p;};
};


X Y::x1;
X* Y::p;

void main()
{
cout<<X::GetCount()<<",";

Y obj;
cout<<obj.XCount()<<",";

obj.CreateX (NUM%11+1);
cout<<obj.XCount()<<",";

Y* p;
cout<<obj.XCount()<<",";

p = new Y [NUM%7+1];
cout<<p->XCount()<<",";

X::Set(NUM%9);
cout<<obj.XCount()<<",";

p->Destroyx();
cout<<p->XCount()<<",";

delete[] p;
cout<<p->XCount()<<",";
}

结果是:-------------------------
...全文
19 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinazcw 2003-06-25
  • 打赏
  • 举报
回复
7,8,17,17,19,4,-5,-7,

其实也没什么好难的,难可能就难在第一个数字,如果没注意的话,会认为是6。因为int X::iTotal = NUM %10 +1; 嘛,但是由于静态数据成员,是在程序开始执行前就分配了存储空间的,所以在main()执行前,Y类中的static X x1已经被构造,所以此时iTotal已经是=7了。

再还有,程序中,定义了两个指针p,一个是Y类中指向X类对象的静态指针,一个是main函数中的指向Y类对象的静态指针。这个再注意一下就没问题了


说了这么多,不知会不会太乱了,呵呵~~~~~~~
arfi 2003-06-25
  • 打赏
  • 举报
回复
7,8,17,17,19,4,-5,-7,
VC6.0下运行的。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧