|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 程序执行结果是多少??
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
703
人关注过本帖
标题:
程序执行结果是多少??
只看楼主
加入收藏
风之舞鹤
等 级:
新手上路
帖 子:180
专家分:0
注 册:2007-6-2
楼主
收藏
问题点数:0 回复次数:6
程序执行结果是多少??
#include<iostream.h>
class A
{
public:
static int a;
void init()
{
a=1;
}
A(int a=2)
{
init();
a++;
}
};
int A::a=0;
main()
{
A obj;
cout<<obj.a<<endl;
}
这个程序执行的结果是什么?为什么?
搜索更多相关主题的帖子:
结果
2008-04-10 12:40
举报帖子
使用道具
赠送鲜花
风之舞鹤
等 级:
新手上路
帖 子:180
专家分:0
注 册:2007-6-2
第
2
楼
收藏
得分:0
结果是1,为什么啊?谁能给个解释?
2008-04-10 12:52
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
3
楼
收藏
得分:0
其实这是设置默认构造函数的参数..当你不指定参数是就选择默认的.在这个题目中你不用参数obj和obj(n),结果都是一样的
[[it] 本帖最后由 sunkaidong 于 2008-4-10 13:10 编辑 [/it]]
学习需要安静。。海盗要重新来过。。
2008-04-10 13:09
举报帖子
使用道具
赠送鲜花
风之舞鹤
等 级:
新手上路
帖 子:180
专家分:0
注 册:2007-6-2
第
4
楼
收藏
得分:0
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-4-10 13:09 的发言:[/bo]
在这个题目中你不用参数obj和obj(n),结果都是一样的
但是如果用不带参数的构造函数,结果a就是就和构造函数里面的一样。为什么带参数的构造函数多a的值的改变没有影响?
2008-04-10 18:02
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
5
楼
收藏
得分:0
因为你把参数设置为a和static变量是重名字的...所以以局部为准..你可以换一下..换了就不一样了
学习需要安静。。海盗要重新来过。。
2008-04-10 18:22
举报帖子
使用道具
赠送鲜花
gllovewyy
等 级:
新手上路
帖 子:4
专家分:0
注 册:2007-10-23
第
6
楼
收藏
得分:0
回复 5# 的帖子
构造函数的参数是局部定义的,不是class的域吧
2008-04-12 18:38
举报帖子
使用道具
赠送鲜花
江湖贫侠
等 级:
新手上路
帖 子:27
专家分:0
注 册:2008-4-10
第
7
楼
收藏
得分:0
楼主可以看下这段程序,将a改成b,结果仍然相同,所以变量重名以局部为准。其实用调试工具可以很容易发现两个a的不同,一个是a,会变大;一个是this->a,保持不变
class A
{
public:
static int a;
void init()
{
a=1;
}
A(int b=2)
{
init();
b++;
}
};
int A::a=0;
main()
{
A obj;
cout<<obj.a<<endl;
}
2008-04-13 11:47
举报帖子
使用道具
赠送鲜花
7
1/1页
1
快速回复:
程序执行结果是多少??
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016246 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved