c++中左值右值的区分
来源:互联网 发布:装修甲醛来自哪里 知乎 编辑:程序博客网 时间:2024/05/22 16:39
左值右值来自于c语言。
左值:用来指代可以用在赋值表达式作则的东西,具体命名的对象、在内存中栈和堆上分配的对象,或者其他对象成员,总之就是有确定存储空间的东西。
右值:指的是只能在赋值表达式右侧出现的东西,如字面值和临时对象。
左值引用只能被绑定到左值,不能被绑定到右值:
int a = 1;int &b = a;//正确,因为a是一个左值int &c = 5;//错误,因为5是一个字面值,是右值
但是一直能够将一个右值绑定到const左值引用上:
int const &d= 100;//正确
这个特殊的设置是为了能将临时对象作为引用参数传递给函数,:
void reverse(srd::string const &str){return;}reverse(“HowAreYou”);//正确,这是一个将临时对象隐式的转换成一个左值引用。 void reverse(std::string &str){retrun;}reverse(“hello”); //error:invalidinitialization of non-const reference of type …
但是在标准中只有绑定到右值,而不能绑定到左值的右值引用:
int&& a = 0;//右值引用,声明正确int b = 1;int && c = b;//错误,因为b是一个左值
0 0
- c++中左值右值的区分
- c语言一些概念的区分
- C多维指针的理解 区分*,**,&
- c++和c的头文件区分
- C系列语言中.c&&.h文件内容的区分
- __cplusplus区分c编译的还是c++编译的
- Oracle 12c的用户密码默认是区分大小写的
- Objective-C语法区分
- 镜头C接口和CS接口的简单区分:
- C语言程序编译后的存储区域区分
- C语言中取绝对值函数的区分
- 对.Net,C#,ASP.NET的基本理解与区分
- 镜头C接口和CS接口的简单区分
- C#,两个接口相同名称函数调用时的区分
- c: string 字符指针与字符数组的区分
- C/C++内存区分配
- C/C++内存区分配
- C/C++内存区分配
- PAT 1021. Deepest Root
- Linux系统各目录和文件系统
- android事件分发机制分析
- android蓝牙
- tab栏切换(二)
- c++中左值右值的区分
- 两种防止头文件二次编译的方法
- 任务7:绘制漫天星斗
- Java线程池关闭2-shutdown和awaitTermination
- 简单单例模式
- SQL那些事儿(五)--oracle字段分组排序
- java io系列17之 System.out.println("hello world")原理
- c语言小知识点 7 __attribute #pragma pack (n)使用及(scatter file)分散加载文件 .sct
- Android N App分屏模式完全解析