| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 705 人关注过本帖
标题:C++ primer 关于引用的初始化用了形参 不理解 求指教
只看楼主 加入收藏
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:7 
C++ primer 关于引用的初始化用了形参 不理解 求指教
C++ primer 的第455页,有这么一段实在理解不了
程序代码:
class ConstRef{
public:
    ConstRef(int ii);
private:
    int i;
    const int ci;
    int &ri;
};
ConstRef::ConstRef(int ii): i(ii),ci(i),ri(ii){}

ri是对int的引用,但在初始化列表中ri(ii),ii只是一个形参,是临时的数据,实在不理解,求指教!
搜索更多相关主题的帖子: 数据 
2012-03-29 22:18
榴紫丫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:33
专家分:135
注 册:2011-11-3
收藏
得分:13 
    int i;
    const int ci;
    int &ri;
可以初始化const对象或慢用类型的对象,但不能对他们进行赋值,在执行构造函数前要完成初始化.
初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中


//构造函数初始化列表仅指定用于初始化成员的值,并不指定这些初始化执行的次序.成员被初始化的次序就是定义成员的次序.//
2012-03-29 23:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
楼主说得对,引用一个局部临时对象是错误的行为
2012-03-30 08:16
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:20 
ConstRef::ConstRef(int ii): i(ii),ci(i),ri(i){}
这就对了,是不是作者代码写错了呢?

My life is brilliant
2012-03-30 09:10
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
书的上下文还有什么其它的相关解释吗?

我也怀疑是作者笔误了,也许可能应该定义成这样:ConstRef(int &ii);
不过他也可能是为了阐明什么其它的问题。
2012-03-30 23:45
飞扬_余
Rank: 2
等 级:论坛游民
帖 子:9
专家分:17
注 册:2011-12-15
收藏
得分:7 
按照原书,编译成功呀,应该是可以的吧。……不知道为什么
2012-03-31 08:03
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:20 
编译肯定可以通过,只不过结果估计会有问题的,这个最好自己写个程序验证一下,多谢楼主的帖子,之前还真没在意

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-31 08:31
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
收藏
得分:0 
谢谢各位了,先把这个问题搁一下!

人得一生得奋斗!
2012-04-01 07:54
快速回复:C++ primer 关于引用的初始化用了形参 不理解 求指教
数据加载中...
 
   



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

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