auto有时不auto

反直觉C++🔥, 👏欢迎github star

auto有时不auto

c++ 复制代码
#include <iostream>

int main() {
   int a = 1;
   int& b = a;
   auto c = a;
   auto d = b;
   auto& e = b;
  
   std::cout << "a:" << a << " b:" << b << " c:" << c << " d:" << d << " e:" << e << std::endl;
   
   a = 10;
   
   std::cout << "a:" << a << " b:" << b << " c:" << c << " d:" << d << " e:" << e << std::endl;
}

输出

c++ 复制代码
a:1 b:1 c:1 d:1 e:1
a:10 b:10 c:1 d:1 e:10

变量a是int类型,变量b是int&类型,变量c是int类型(同a),变量d是int类型(与b不同),变量e是int类型(同b),auto没有把d推导为和b相同的类型,有点反直觉。

奇怪的知识增加了

如果希望推演出来的auto类型为引用(左值引用),需要明确指出,就像变量e定义的那样:

c++ 复制代码
auto& e = b;

如果希望推演出来的auto类型携带const,也需要明确指出:

c++ 复制代码
const auto ca = a;  // ca是const int
相关推荐
小米里的大麦7 分钟前
19 C、C++ 操作 MySQL
c语言·c++·mysql
有毒的教程19 分钟前
Dev-C++ 使用扩展库两种方式:DevPak一键安装 / 手动配置(重点)
android·c++·adb
纪念 22928 分钟前
c++ string(二)
开发语言·c++
sanqima35 分钟前
MFC里的线程本地存储(TLS)与模块状态(Module State)
c++·mfc·tls·module state
见叶之秋36 分钟前
【C++】从基类到派生类:关于C++继承的务实梳理
开发语言·c++
kyle~43 分钟前
C++ 智能指针:RAII、所有权与对象生命周期
开发语言·c++
苏辰澈1 小时前
C++独属于自己的变身:多态
c语言·开发语言·c++·visualstudio·编辑器
水饺编程1 小时前
第1章,[Win32 章节]:在 VS2019 里面安装 MSDN
c语言·c++·windows·visual studio
垆边人似月.1 小时前
华为题:每日温度
数据结构·c++·算法
j7~2 小时前
【算法】专题四.前缀和:一维二维模板,配套 LeetCode 真题,结合同余定理、哈希前缀和,搞定子数组与子矩阵区间求和问题。
数据结构·c++·算法·前缀和·优选算法