typeid
表示C++ RTTI运算符也是C++关键字。它返回一个保存(动态)类型特定信息的对象std::type_info
。为什么在使用typeid运算符时需要#include <typeinfo>?
根据我对各种来源的理解,当使用typeid
时必须包括<typeinfo>
,否则该程序是不合格的。实际上,如果我不包含前面提到的头文件,我的gcc5.2编译器甚至不编译程序。我不明白为什么要使用C++ 关键字要求包含头文件。我知道每当我们使用该头部中声明/定义的某个对象时,都会强制使用头部,但typeid
不是类别类型。那么包括标题<typeinfo>
在内的强制执行的原因是什么?
对于类似的情况,在你可能或不可能期望的情况下,还需要包含''。 –
chris
@chris我认为只有当你明确地使用'std :: initializer_list'时,这会更有意义,因为'std :: initializer_list'是它自己的一个类,而不是关键字,尽管被核心语言隐含地使用了。 – vsoftco
是的,虽然有一些比较棘手的情况,比如'auto list = {1,2,3};'和(for auto x:{1,2,3}){}'。 – chris