输出typeid nullptr名称

时间:2018-09-17 06:20:41

标签: c++

我知道整数和整数指针等的typeid()。name()输出。 但是被下一行的输出弄糊涂了。

cout << typeid(nullptr).name() << endl; //Dn

输出为 Dn 。它代表什么?

2 个答案:

答案 0 :(得分:1)

在C ++本身的范围内没有答案。 std::type_info::name成员返回的字符串是定义的实现。这取决于您的C ++实现(编译器),目标平台以及所遵循的ABI。

答案 1 :(得分:1)

std::type_info::name returns a mangled name

  

返回包含类型名称的实现定义的以null结束的字符串。不提供任何保证;特别是,返回的字符串对于几种类型可以是相同的,并且可以在同一程序的调用之间进行更改。
  [..]
  可以使用特定于实现的API(例如,abi::__cxa_demangle或通过boost::core::demangle将整齐的名称转换为人类可读的形式。也可以通过命令行实用程序c++filt -t用管道传输它。

这样做会导致

$ echo 'Dn' | c++filt -t
decltype(nullptr)