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
相关推荐
搬砖魁首2 小时前
基础能力系列 - 多线程2 - 条件变量
c++·rust·条件变量·原子类型·线程同步互斥
chase_my_dream2 小时前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试
牛油果子哥q2 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
凡人叶枫4 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
不想写代码的星星4 小时前
std::move 根本不移动,就像老婆饼里没有老婆
c++
redaijufeng4 小时前
C++雾中风景7:闭包
c++·算法·风景
小欣加油5 小时前
leetcode287寻找重复数
数据结构·c++·算法·leetcode
思麟呀5 小时前
C++11 核心特性(三):强类型枚举、static_assert 与 std::tuple
开发语言·c++
一拳一个呆瓜5 小时前
【STL】C++程序的启动与终止
c++·stl
凡人叶枫6 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++