C++ 左值引用与 const 关键字

打印 上一主题 下一主题

主题 922|帖子 922|积分 2766

左值引用是已定义的变量的别名,其主要用途是用作函数的形参,通过将左值引用变量用作参数,函数将使用原始数据,而不是副本。引用变量必须在声明时同时初始化,可将 const 关键字用于左值引用,如下所示:
  1. //声明并初始化常规左值引用变量
  2. int x = 55;
  3. int & rx = x;
  4. //将const关键字用于左值引用变量,以下几种为等效表示
  5. int x = 55;
  6. const int & crx = x;
  7. int const & crx = x;
复制代码
Microsoft Visual Studio 中连续多个 const 会被编译器解释成一个,即 const const const const int & 与 const int & 等效,除此之外,const int const & 在 Microsoft Visual Studio 中也与 const int & 等效,而 int & const 在 QT 中将会报错,在 Microsoft Visual Studio 中与 int & 等效。
以上两种类型左值引用的特性如下(旧版 C++ 可能与下列特性不十分吻合,以 C++11 为准):

  • 类型为 int & 的引用 rx 只能作为已有变量的别名,不会生成临时变量,可修改所引用变量的值,可将 int 变量、int & 变量、int * 指针所指变量、int *const 指针所指变量在初始化时赋给 rx(接受可通过地址访问的非 const 变量),必须在声明时初始化,后续无法更换所引用的变量。变量初始化完成后,其表现与 int 类型一致。
  • 类型为 const int & 的引用 crx 既可作为已有变量的别名,也可在合适的时候生成临时变量,成为该临时变量的别名,但不可修改所引用变量的值,可将 int 变量、const int 变量、int & 变量、const int & 变量、int * 指针所指变量、int *const 指针所指变量、const int * 指针所指变量、const int *const 指针所指变量、类型为 int 的非左值(比如字面常量 100、多项表达式 1+50*2)、类型不是 int 但可转换为 int 的变量或非左值(比如 short 变量、多项表达式 1.0+50.0*2.0、字面常量 100.0)在初始化时赋给 crx,也必须在声明时初始化,后续无法更换所引用的变量。变量初始化完成后,其表现与 const int 类型一致。
常规左值引用变量的初始化用法如下:
[code]//初始化用法一:作为short变量别名short x = 55;short & rx = x;cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表