| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 386 人关注过本帖
标题:包含中的赋值
只看楼主 加入收藏
xinshou1991
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2011-7-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
包含中的赋值
class A
{
public:
    A(){x=0;}
    A(int i){x=i;}
    void get(){cout<<x;}
private:
    int x;
};
class B
{
public:
    B(){y=0;}
    B(int i,int j,int k):a(i),b(j){y=k;}
    A geta(){return a;}
    A getb(){return b;}
    int gety(){return y;}
private:
    A a;
    A b;
    int y;
};
void main()
{
    B b(1,2,3);
    b.geta().get();
    b.getb().get();
    b.gety();
    cout<<b.gety();
}
其中x,y的值在构造函数中为什么要设置为0呢,开始我什么也没写一样运行出来了,赋为0和不赋为0 有什么区别吗?请各位高手请教?
搜索更多相关主题的帖子: private public return 
2011-08-03 16:33
ToBeStronger
Rank: 4
等 级:业余侠客
帖 子:61
专家分:239
注 册:2011-4-8
收藏
得分:5 
本来就没有区别.....设置为0,是为了提供一个默认值.....
2011-08-03 20:53
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:10 
x,y的值在构造函数中为什么要设置为0呢?
在你的程序中是没有任何影响,设置为0是创建一个对象初始化x和y的值,如果不初始化,那么假如
要进行if等语句进行判断时,比如if(x>5);就会出现错误;
因为没有初始化x,x的并不是数字,你可以自己写个代码int x; cout<<x<<endl;就知道为什么了
你的程序中x和y设置的0是在默认构造函数中设置而不是构造函数.
当你新建一个无参对象时 比如 A a;
就会自动调用默认构造函数.假设定义了A a(1)
则会调用带参的构造函数,一般当你创建了一个类系统会自动给你的类提供默认构造函数
但只要你创建了一个构造函数,系统就不会提供默认构造函数了!

都不结贴我郁闷那!
2011-08-03 21:14
我是菜鸟C
Rank: 4
等 级:业余侠客
帖 子:74
专家分:200
注 册:2011-3-27
收藏
得分:0 
   就算你不赋值的话,你的编译器会自己给他赋个初值的。。所以  效果一样。
2011-08-03 21:35
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:5 
提供一个初值而已,无甚用处
2011-08-04 07:23
xinshou1991
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2011-7-25
收藏
得分:0 
明白了!多谢各位啦!
2011-08-04 09:42
快速回复:包含中的赋值
数据加载中...
 
   



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

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