栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】右值可以被修改吗?

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】右值可以被修改吗?

如果是C++11之前,右值常常指的是类型转换中产生的临时量、字面值常量,非引用返回值产生的临时变量、运算表达式产生的临时变量等,都是是无法取地址的,这种情况下右值是无法修改的。即使使用引用,也必须是将右值赋给常量引用:
const int & a = 10;
这种情况下也只能获取地址,但没法进行赋值修改(已经声明了const)。

在C++11之后,随着&&右值引用的出现,对右值也进行了扩充,现在的右值包括纯右值(之前的右值)和将亡值。
如果使用右值引用去引用一个右值,那么这个右值是可以被改变的。因为此时右值引用将这个值变成一个将亡值,将亡值被存储在特殊的位置。

    int aa = 10; //aa是左值
    int && bb = 100; //bb是一个右值引用
    int && cc = move(aa); //cc也是一个右值引用,引用对象是使用move将左值aa变成的将亡值。
    bb=111; //通过右值引用改变右值
    cc=11;
    cout< 

输出结果为111 11

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767039.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号