到底是怎么了?高手?

jesonyin 2003-01-23 08:52:25
#include "iostream.h";

class demo{
int x,y;
public:demo(int a,int b)
{ x=a,y=b;
cout<<"demo(int,int) be called";
}

demo()
{ cout<<"demo() be called; }
void show()
{ cout<<"x="<<x<<"y="y<<endl; }
};

//demo d2;
void main()
{ demo d1(3,5);
d1.show();
*请问这时候的d2.show的输出是什么?
如果将demo d2 放在类的申明和 主函数main之间
d2.show输出什么?*
demo d2;
d2.show();
}
...全文
38 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphihero 2003-01-23
  • 打赏
  • 举报
回复
你可以看看c++ primer 331 页,在全局域中定义的对象,如果没有指定显式的初始值,则该存储区被初始化为0
jesonyin 2003-01-23
  • 打赏
  • 举报
回复
to point_to(一 指) :

谢谢
point_to 2003-01-23
  • 打赏
  • 举报
回复
y!
including static variables!
you can see it in a book on c or c++!
jesonyin 2003-01-23
  • 打赏
  • 举报
回复
自己上机试过
1,输出为随机值;
2。全为0

试试,。

to point_to(一 指) :类对象的全局申明之后,一定初始化为0吗?
谢谢,要给分了
liersgroom 2003-01-23
  • 打赏
  • 举报
回复
如果你使用上面这样的程序,将会输出
demo(int,int) be calledx=3y=5
demo() be calledx=....y=..... 这里d2.show x y未赋初值,所以未知

如果把 demo d2 放在外面,那么它为全局变量,输出
demo() be calleddemo(int,int) be calledx=3y=5
x=0y=0
全局变量是会自己完成初始化的
HITGB 2003-01-23
  • 打赏
  • 举报
回复
第一种情况,局部作用域,是在栈中申请的空间,随机

第二种情况,全局作用域,是在堆中申请的空间,值自动初始化为0
ywls 2003-01-23
  • 打赏
  • 举报
回复
应该是输出两个未定值,很正常啊。
zengyh 2003-01-23
  • 打赏
  • 举报
回复
感觉show会不稳定吧。毕竟你声明d2变量的时候,构造函数void demo()调用了。但x y都没有赋值。
point_to 2003-01-23
  • 打赏
  • 举报
回复
如果将demo d2 放在类的申明和 主函数main之间
就是一个全局变量乐,初始化为0。
Cybergate 2003-01-23
  • 打赏
  • 举报
回复
为什么不自己运行一下呢?我们可不是编译器.

有很多低级的语法错误……

point_to 2003-01-23
  • 打赏
  • 举报
回复

class demo{
int x,y;
public:demo(int a,int b)
{ x=a,y=b;
cout<<"demo(int,int) be called";
}

demo()
{
cout<<"demo() be called; ";
}
void show()
{
cout<<"x="<<x<<"y="<<y<<endl;
}
};

//demo d2;
void main()
{ demo d1(3,5);
d1.show();
/*请问这时候的d2.show的输出是什么?随机值 如果将demo d2 放在类的申明和 主函数main之间
d2.show输出什么?*/
demo d2;
d2.show();
}

69,375

社区成员

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

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