typeinfo的用法
书上说 typeid返回一个type_info对象的引用 这个是什么意思
class A
{......}
typeid(A)//这个是什么意思,返回的这个引用可以做什么
我在两本书看到这个东西 一个是在多态的时候用到
typeid(*a[i]).name();//a是一个基类类型的vector ,name() 是一个函数,a容器存放的是A的派生类对象的引用
这个里面 typeid(*a[i])返回的是什么
还有一个地方是用于判断的
class A
{....};
class B::public A
{....};
void c(A *a);
{
if(typeid(B) == typeid(*a));
( (B*)a->display();//display()是一个基类中的virtual函数
}
这里面的判断 还是下面的转型又是什么意思呢 看不懂
[解决办法]
就是一个类型判断而已啊。而且是运行过程中支持的。
int i;cout<<typeid(int).name()<<endl;//输出是:int
[解决办法]
基本上就只有两种用法:name()(具体结果由实现定义,不同编译器不保证相同);==比较类型相同。
(B*)这里是向下转型,相当于static_cast<B*>。因为向下转型不总是安全的(A*不一定指向B类型对象),所以用type_info校验一下。不过这里不如直接dynamic_cast。