标题:这里为什么错了?老师们能否回答一下
只看楼主
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
 问题点数:0 回复次数:14 
这里为什么错了?老师们能否回答一下
class example{
private :int& ref;
         const int num;
public:example(int r,int n){ref=r;num=n;}
};
example e(2,8);

这里的构造函数给私有成员赋值的时候,为什么必须用参数表的形式,即example(int r,int n):ref(r),num(n);
我这里怎么就不对啊?


这么做不对的,但是如果变成如下
class example{
private :int ref;
          int num;
public:example(int r,int n){ref=r;num=n;}
};
example e(2,8);
就可以通过编译了
,看来是& ,和const导致的错误,可是不知道为什么

[[it] 本帖最后由 junpeng1 于 2008-9-10 18:33 编辑 [/it]]
搜索更多相关主题的帖子: 老师 
2008-09-10 18:26
ailing
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-3
得分:0 
你的应该是对的吧
2008-09-10 18:30
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
得分:0 
这里错的
2008-09-10 18:31
ailing
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-3
得分:0 
参数表是有成员对象时才要用的
2008-09-10 18:32
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
一句话:

必须对任何const或引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化列表进行初始化!


2008-09-10 18:35
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
得分:0 
4# 大 中 小 发表于 2008-9-10 18:32  只看该作者
参数表是有成员对象时才要用的
这里也没有成员对象啊,但是这里是这么用的

正确的方式应该是
class example{
private :int& ref;
         const int num;
public:example(int r,int n):ref(r),num(=n){};
};
example e(2,8);
还是不太明白,哪位能否清楚一些讲一下
2008-09-10 18:37
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
你想想这个就容易理解了:
const int num=0;
int& ref=a;

在这之后还能改变num 和 ref的值吗?
显然,不能!
再想想,构造函数的作用吧,每次创建对象时都会调用它!...嘿,明白了吧...

2008-09-10 18:38
ailing
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-3
得分:0 
你的私有成员定义的对吗,我以前怎么没见过象这样定义的
2008-09-10 18:41
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
得分:0 
哦,似乎明白了一些,再去想想去,我的破书上面没有,再去找找别的书好好看看!
2008-09-10 18:41
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
得分:0 
8# 大 中 小 发表于 2008-9-10 18:41  只看该作者
你的私有成员定义的对吗,我以前怎么没见过象这样定义的

这个就是例题啊
2008-09-10 18:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-232561-1-1.html




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

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