c++ - 如果引用对象是 const,则 const auto & 和 auto & 之间的区别
问题描述
// case 1
const int i = 42;
const auto &k = i;
// case 2
const int i = 42;
auto &k = i;
在这种情况下我们需要const
关键字 before吗?auto
毕竟,对自动推导类型的引用 ( ) 将包括对象 ( )k
的顶层。所以我相信在这两种情况下都会引用一个常量 ( ) 的整数。const
const
int i
k
const int &k
如果这是真的,这是否意味着const auto &k = i;
如果 1 被编译器替换为只是const int &k = i;
(auto
被替换为int
)?而在情况 2 中,auto
被替换为const int
?
解决方案
auto
关键字在编译时自动决定变量的类型。
在您的第一种情况下,auto
减少int
到const int
在第二种情况下减少到的位置。因此,您的两种情况都简化为与以下相同的代码:
const int &k = i;
但是,最好明确地使用 const 以获得更好的可读性并确保您的变量TRULY是const
.
推荐阅读
- git - 在 http auth 上使用 @ 字符进行 git pull
- symfony - Symfony 2.8 中的教义分析
- android - 将图像视图居中并使其占屏幕宽度的 50% 而没有约束线?
- powershell - 如何删除 CSV 中以“#”开头或空白的行 | 电源外壳
- python-3.x - 我正在尝试从某个容器中获取所有链接,但是对于 html 中的每个“href”,我得到了“无”的输出
- html - 如何在 Jekyll 博客中更改代码片段背景
- sql-server - 根据对象依赖运行 RoundHouse 脚本
- php - 使用 fpdi 生成条形码 code128 以 203 dpi 打印时不会被读取
- javascript - 处理对 .html 文件的直接访问
- jenkins - 尝试部署 Jenkins 时 Oauth 范围不足单击以部署在现有的 Google Kubernetes Engine 集群上