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
相关推荐
澈2077 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
A.A呐7 小时前
【C++第二十九章】IO流
开发语言·c++
ambition202427 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
kebeiovo8 小时前
atomic原子操作实现无锁队列
服务器·c++
Yungoal8 小时前
常见 时间复杂度计算
c++·算法
6Hzlia8 小时前
【Hot 100 刷题计划】 LeetCode 48. 旋转图像 | C++ 矩阵变换题解
c++·leetcode·矩阵
Ricky_Theseus9 小时前
C++右值引用
java·开发语言·c++
吴梓穆9 小时前
UE5 c++ 常用方法
java·c++·ue5
云栖梦泽9 小时前
Linux内核与驱动:9.Linux 驱动 API 封装
linux·c++
Morwit10 小时前
【力扣hot100】 1. 两数之和
数据结构·c++·算法·leetcode·职场和发展