auto有时不auto

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

auto有时不auto

#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;
}

输出

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定义的那样:

auto& e = b;

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

const auto ca = a;  // ca是const int
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关键字auto在C++98中的语义是定义一个自动生命周期的变量,但因为定义的变量默认就是自动变量,因此这个关键字几...
    iShare_爱分享阅读 3,471评论 0 2
  • 0.目录 extern static volatile const inline explicit c++11: ...
    lllnan阅读 3,318评论 0 0
  • auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。 使用auto会拖慢c++效...
    剑有偏锋阅读 5,043评论 0 0
  • 编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚地知道表达式的类型。然而要做到这一点并非那么容易,...
    lgz00gi阅读 4,101评论 0 1
  • auto类型推导规则 C++11中新增了使用auto进行自动类型推断的功能,从此使用容器等复杂类型时,可以简化代码...
    拔丝圣代阅读 9,488评论 0 1

友情链接更多精彩内容