【发布时间】:2018-05-24 11:56:41
【问题描述】:
我对 C++11 中引入的“auto”关键字和类型转换 (dynamic_cast/static_cast) 这两个概念感到困惑。
C++11 中的“auto”关键字是否在内部使用类型转换?
【问题讨论】:
-
它使用模板规则来确定类型。
-
auto实际上只是为您“推导出”类型,因此您不必自己编写它,它永远不会自行更改值的类型。它只能用于编译器可以从上下文推断类型的地方 (more info here)。类型转换涉及更改值的类型,您必须在程序中告诉您要将值用作的新类型是什么(更多信息 here 和 here)。 -
这是两个不同的概念。当您想将某种类型的值视为另一种类型的值(例如,将整数值视为浮点值)时,使用强制转换。类型推导允许你推导类型,例如当你想声明一个变量的类型是其初始化表达式
auto i = 1;。 -
auto的优点之一是通过使用它,您可以确定在初始化它时不会有任何隐式转换。这几乎与演员阵容相反。也许您将auto与std::any混淆了?
标签: c++ c++11 auto typecasting-operator