Strange behaviour of the typeid operator?

前端 未结 2 1919
粉色の甜心
粉色の甜心 2020-12-19 21:21

Using XCode 3.2.3 (64-bit), I get following strange output. What am I doing wrong?

#include 
#include 

struct student {

};         


        
相关标签:
2条回答
  • 2020-12-19 21:57

    The name() member function of the type_info struct is implementation-specific. There's no guarantee whatsoever that it will try to return something that matches what it says in the original program. In fact, the C++ ISO standard (18.5.1.7) actually says that this function returns "an implementation-defined NTBS" (null-terminated byte string). If it wanted to, it could have this always return the string "neener neerer I won't tell you the name of this type." This contrasts with Java's Class<?> type, which has very strict restrictions on what it can and cannot return.

    If you’d like to convert the name from std::type_info into something more human, readable, check this other question for details.

    0 讨论(0)
  • 2020-12-19 22:09

    What's going on is nothing special. Just that typeid doesn't promise to return the "original" name of the type, but just a name.

    The function returns an implementation-defined string, which, if you're lucky, is recognizable, but it makes no promise of that.

    0 讨论(0)
提交回复
热议问题