我知道整数和整数指针等的typeid()。name()输出。 但是被下一行的输出弄糊涂了。
cout << typeid(nullptr).name() << endl; //Dn
输出为 Dn 。它代表什么?
答案 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)