首页 > 解决方案 > 如果引用对象是 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的顶层。所以我相信在这两种情况下都会引用一个常量 ( ) 的整数。constconst int ikconst int &k

如果这是真的,这是否意味着const auto &k = i;如果 1 被编译器替换为只是const int &k = i;auto被替换为int)?而在情况 2 中,auto被替换为const int?

标签: c++constantsauto

解决方案


auto关键字在编译时自动决定变量的类型。

在您的第一种情况下,auto减少intconst int在第二种情况下减少到的位置。因此,您的两种情况都简化为与以下相同的代码:

const int &k = i;

但是,最好明确地使用 const 以获得更好的可读性并确保您的变量TRULYconst.


推荐阅读