标题:这个引用怎么理解?
取消只看楼主
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
结帖率:85.71%
已结贴  问题点数:20 回复次数:5 
这个引用怎么理解?

int &r4 = r1 * 2;为什么不正确呢?
搜索更多相关主题的帖子: 引用 int 
2017-05-27 12:53
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
编辑器提示,非常量引用初始化值必须是左值,r1不是左值吗?
#include "stdio.h"
void main()
{
    int i =42;
    int &r1 = i;
    int &r4 = r1*2;
}

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-27 13:16
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 4楼 rjsp
r1*2不是左值
const int &4 = r1*2;就没问题。

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-27 14:25
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 6楼 rjsp
所以不可写出 r4 = 0 这种语句,也就是不可能有 r1*2 = 0 这种非法情况出现。
-----------------------------------------------------
感谢版主的耐心解答,您的答案又更一步启发了我。
您的意思是:
如果 int &r4 = r1*2; 成立 那么
        r4 = 0;
        r1 *2 = 0;成立,
但是很显然以上两条语句为非法,所以 int &r4 = r1*2非法
然而 加上const 就不会出现上面两条语句的可能性。所以const int &r4 = r1*2 是正确的。

[此贴子已经被作者于2017-5-27 15:19编辑过]


跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-27 15:12
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 3楼 九转星河
感谢大佬关注

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-27 15:20
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 9楼 yangfrancis
多谢指导。

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-27 15:55



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




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

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