dynamic_cast应用注意事项
- 只能应用与指针和引用的转换,而不能是类型本身
- 要转换的类型中必须包含虚函数
- 转换成功则返回子类的地址,失败返回NULL。
使用举例:
目标类 *p=dynamic_cast<目标类 *>(obj)
typeid注意事项
- type_id返回一个type_info对象的引用
- 如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数
- 只能获取对象的实际类型
使用举例:
typeid(*obj).name()
type_info类部分代码
class type_info
{
public:
const char *name() const;
bool operator==(const type_info& rhs)const;
bool operator!=(const type_info& rhs)const;
int before(const type_info& rhs)const;
virtual ~type_info();
private:
......
}