| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:程序执行结果是多少??
只看楼主 加入收藏
风之舞鹤
Rank: 1
等 级:新手上路
帖 子: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
风之舞鹤
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-6-2
收藏
得分:0 
结果是1,为什么啊?谁能给个解释?

2008-04-10 12:52
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
其实这是设置默认构造函数的参数..当你不指定参数是就选择默认的.在这个题目中你不用参数obj和obj(n),结果都是一样的

[[it] 本帖最后由 sunkaidong 于 2008-4-10 13:10 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-04-10 13:09
风之舞鹤
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-6-2
收藏
得分:0 
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-4-10 13:09 的发言:[/bo]
在这个题目中你不用参数obj和obj(n),结果都是一样的

但是如果用不带参数的构造函数,结果a就是就和构造函数里面的一样。为什么带参数的构造函数多a的值的改变没有影响?

2008-04-10 18:02
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
因为你把参数设置为a和static变量是重名字的...所以以局部为准..你可以换一下..换了就不一样了

学习需要安静。。海盗要重新来过。。
2008-04-10 18:22
gllovewyy
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-10-23
收藏
得分:0 
回复 5# 的帖子
构造函数的参数是局部定义的,不是class的域吧
2008-04-12 18:38
江湖贫侠
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-10
收藏
得分: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
快速回复:程序执行结果是多少??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018266 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved