当前位置: 首页 > news >正文

C++左值和右值

C++中的左值和右值_c++左值和右值-CSDN博客

左值:程序可以获取其地址,可以通过地址访问它们,是可被引用的数据对象。

可修改的左值:

    int m;
    cout << &m;

不可修改的左值。

如const变量:可以取地址,但不可对其赋值。

    const int m = 5;
    cout << &m;

左值指表达式结束后仍然存在的持久对象。

右值是指表达式结束时就不再存在的临时对象。

一个区分左值和右值的便捷方法是:看能不能对表达式取地址。

class IntClass {
private:int x;
public:IntClass(int value) :x(value) {}
};cout << &IntClass(6);

所有具名对象或变量都是左值,而右值不具名。

上面的例子验证了这句话。 

通过排他性定义的话,每个表达式不是左值就是右值。

 C++11中,右值有两个概念组成:

一个是将亡值:

与右值引用相关的表达式。

比如:

将要被移动的对象

一个是纯右值:

包括:

非引用返回的临时变量

这是什么?

int test()
{return 10;
}
int main(int argc, char* argv[]) {&test();
}

运算表达式产生的临时变量

    &(1 + 2);

我自己理解的话:这样应该也会产生临时变量吧

 

    int a = 1;
    int b = 2;
    &(a + b);

原始字面量

 

字面量本身是不可寻址的。

lambda表达式.

 


http://www.mrgr.cn/news/53767.html

相关文章:

  • 通过 Twitter Token 实现授权与操作
  • C++ 11标准——Class类(1)
  • MySQL8.0.28解压版安装windows
  • SqlDbx连接oracle(可用)
  • 《深度学习》Dlib、OpenCV 关键点定位 原理及案例解析
  • 新的类Rufus应用可带来简单的Windows 11 24H2安装旁路
  • csdn(最新交流群)
  • 本机运行Nacos容器每次都要重新创建容器,该怎么办?
  • Mockito单元测试的坑
  • 【Canvas与艺术】八瓣点心包裹之一
  • 【工具变量】A股上市企业大数据应用(2001-2023年)-参考柏淑嫄实践
  • 数据结构_day3
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第四十五章 注册字符类设备
  • MySQL安装配置教程,入门学习攻略,重点知识点总结
  • 文字的力量
  • JAVA学习-练习试用Java实现“成绩归类”
  • 2024年十大优秀内部风险管理解决方案
  • 软考(网工)——Linux服务器配置
  • Redis 事务 主从复制
  • PRCV 2024 - Day 1
  • 大模型~合集12
  • 深入学习JPEG压缩原理与过程
  • 必看干货|等保测评(网络安全等级保护)五问五答
  • Java:数据结构-二叉树
  • 【Pycharm默认解释器配置文件】怎样删除配置解释器的无效历史记录?
  • uniapp和原生微信小程序的优劣、区别?