XiLaiTL大约 2 分钟

传递的内容类型

类型
值类型在栈上
引用类型在堆上

求值策略

调用函数的参数的求值和传值方式

参数是一个表达式/单变量

求值策略求值时间传值类型
值传递调用前副本
引用传递调用前原值
名传递调用后

名传递参考scala 主要是求值时间的问题

总体效果

变量代表什么?变量赋值效果求值策略传递的内容类型
java基本数据类型存储数据的地址修改存储的内容值传递值类型
引用类型存储地址的地址修改存储的内容值传递引用类型

Cpp的类型标志

左值引用T&只能绑定左值
右值引用T&&只能绑定右值
常量左值const T&既可以绑定左值又可以绑定右值
常量右值const T&&绑定右值
万能引用auto &&
  • value
    • glvalue范左值
      • lvalue左值
      • xvalue将亡值
    • rvalue右值
      • prvalue纯右值
      • xvalue将亡值

值类别 - cppreference.comopen in new window

左值

得到的变量“名称”

字符串字面量

性质

可以取地址

  1. 可以通过内建的取址运算符取左值的地址:&++i[1] 及 &std::endl 是合法表达式。
  2. 可修改的左值可用作内建赋值和内建复合赋值运算符的左操作数。
  3. 左值可以用来初始化左值引用;这会将一个新名字关联给该表达式所标识的对象。

纯右值

字面量

不具名的临时对象

性质

  1. 纯右值不具有多态:它所标识的对象的动态类型始终是该表达式的类型。

  2. 非类非数组的纯右值不能有 cv 限定,除非它被实质化以绑定到 cv 限定类型的引用 (C++17 起)。(注意:函数调用或转型表达式可能生成非类的 cv 限定类型的纯右值,但它的 cv 限定符通常被立即剥除。)

  3. 纯右值不能具有不完整类型(除了类型 void(见下文),或在 decltype 说明符中使用之外)

    纯右值不能具有抽象类类型或它的数组类型。

C++——const详解_况祥彬的博客-CSDN博客_c++ constopen in new window

上次编辑于:
贡献者: XiLaiTL