使用 XCode 3.2.3(64 位),我得到以下奇怪的输出。我究竟做错了什么?
#include <iostream>
#include <typeinfo>
struct student {
};
int main()
{
int i;
student obj;
std::cout << typeid(i).name() << "\n";
std::cout << typeid(obj).name() << "\n";
return 0;
}
Output:
i
7student
The name()
的成员函数type_info
struct 是特定于实现的。无法保证它会尝试返回与其在原始程序中所说的内容相匹配的内容。事实上,C++ ISO 标准 (18.5.1.7) 实际上表示此函数返回“实现定义的 NTBS”(以 null 结尾的字节字符串)。如果它愿意,它可以始终返回字符串“neener neerer I won't Tell you the name of this type.”这与 Java 形成对比Class<?>
type,它对可以返回什么和不能返回什么有非常严格的限制。
如果您想将名称从std::type_info
变成更人性化、可读性、检查性的东西这另一个问题 https://stackoverflow.com/questions/281818/unmangling-the-result-of-stdtype-infoname了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)