C++中auto关键字如何推导类型
How does the auto keyword deduct the type in C++
我想知道 auto 关键字如何确定 c++ 中变量的类型。我认为静态类型语言无法做到这一点。
例如,这是如何工作的:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
auto a = 5433245244524;
std::cout << a << std::endl;
}
它的工作方式与模板的表达式return类型推导相同。它发生在编译类型,所以它是一个静态类型。
Literal 5433245244524
包含初始化表达式。您可以使用运算符 decltype()
在编译时获取表达式的类型(静态类型)。例如
decltype(5433245244524) a = 5433245244524;
但auto
关键字不止于此。这是一个占位符类型。例如。在声明中
const auto& a = 5433245244524;
此处auto
替换没有限定符的类型标识符,形成兼容的引用类型。
关键字 auto
还有许多其他用途,例如函数的尾部 return 类型等。参见 https://en.cppreference.com/w/cpp/language/auto
我想知道 auto 关键字如何确定 c++ 中变量的类型。我认为静态类型语言无法做到这一点。 例如,这是如何工作的:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
auto a = 5433245244524;
std::cout << a << std::endl;
}
它的工作方式与模板的表达式return类型推导相同。它发生在编译类型,所以它是一个静态类型。
Literal 5433245244524
包含初始化表达式。您可以使用运算符 decltype()
在编译时获取表达式的类型(静态类型)。例如
decltype(5433245244524) a = 5433245244524;
但auto
关键字不止于此。这是一个占位符类型。例如。在声明中
const auto& a = 5433245244524;
此处auto
替换没有限定符的类型标识符,形成兼容的引用类型。
关键字 auto
还有许多其他用途,例如函数的尾部 return 类型等。参见 https://en.cppreference.com/w/cpp/language/auto