使用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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
i
7student
Run Code Online (Sandbox Code Playgroud)
结构的name()成员函数type_info是特定于实现的.无法保证它会尝试返回与原始程序中的内容相匹配的内容.实际上,C++ ISO标准(18.5.1.7)实际上表示该函数返回"实现定义的NTBS"(以空值终止的字节串).如果它想要的话,它可能总是返回字符串"neener neerer我不会告诉你这种类型的名字." 这与Java的Class<?>类型形成对比,后者对可以和不能返回的内容有非常严格的限制.
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |