【发布时间】:2015-12-07 18:08:46
【问题描述】:
从 C++11 开始,我们可以使用 auto a = 1+2 代替 int a = 1+2 并且编译器会自行推断 a 的类型。它是如何工作的?在编译时(更多操作)是否比自己声明类型慢?
【问题讨论】:
-
您是否尝试过使用和不使用
auto测量代码?相关:herbsutter.com/2013/08/12/… -
这是一个编译类型说明符,不影响运行时间。
-
我的意思是更慢的编译时间
-
老实说,我怀疑它的数量会很大,因为编译器无论如何都必须推导出“理想”表达式类型以确保它与 声明的类型兼容.所以我想实现 auto 可能建立在编译器已经在做的很多事情的基础上。
-
auto仅在可以从表达式中推断出类型的情况下才合法,并且编译器必须确定表达式的类型以验证分配(非auto)是否有效。 另一方面,使用auto意味着不会发生隐式转换,编译器也不需要验证是否发生缩小转换等。因此,auto可能会编译得更快。在某些奇怪的情况下(在其他情况下由于程序员选择类型而进行转换),它甚至可能在运行时更快。
标签: c++ c++11 types auto compile-time