自学内容网 自学内容网

C++基础之值(Value)的类别

1,左值(LValue)

  • 位于赋值运算符左侧,可以进行取地址操作。
  • 函数调用时,左值可以绑定到引用参数。

2,右值(RValue)

  • 在内存中没有持久存储位置的临时值,不能被取地址,通常出现在赋值运算符的右侧。
  • 常见右值如字面量(整数、浮点数、字符),表达式计算结果。

3,纯右值(Pure RValue)

  • C++11引入,多用于临时对象,不可以取地址,不可以绑定到左值引用参数。
  • 返回值为非引用类型的表达式: x++,x+1。
  • 除字符串之外的字面量,如整型12,布尔类型true/false。

4,将亡值(XValue)

  • C++11引入,表示即将被移动的对象,可以被转换为右值引用。

5,右值引用

  • 一种只能绑定到右值上的特殊引用类型,目的是支持移动语义(move semantics)和完美转发(perfect forwarding)。
  • std::move(),移动语义使得在C++里返回大对象(如容器)和运算符成为现实,大大减少不必要的复制操作,提高了代码的简洁性和可读性。
  • std::foward完美转发是C++模板编程中的一个高级特性,允许模板函数或模板类将参数以原始类别(左值或右值)转发给其他函数。

原文地址:https://blog.csdn.net/qqliang1314/article/details/142930673

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!