1. 不同编译器typeid后的信息不完全相同的。
一些编译器用i表示int,f表示float,而一些使用全名,即int,float。
在检测类型时使用:
if (typeid(classname).name() == typeid(valuename).name()) {
// ...
}
2. 至于后面的base前面多出个4,那是因为类名base占个4个字节。
typeid(..).name()返回的是指针,前面的数字表示类型名的长度,如果你定义了类,名字有30个字符,那么,name()返回的前2个字节就是30...
typeid
最新推荐文章于 2021-09-05 22:52:40 发布