用于c++类集成多态间的转换,分为: 1、子类向基类的向上转型, 2,基类向子类的向下转型 向上转型不需要借助任何特殊的方法,只需要将子类的指针或引用即可
向下转换:dynamic_cast操作符,将基类类型的指针或引用安全的转换为派生类的指针或引用,dynamic_cast将一个几类对象指针cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类只恨来做相应出力。这也是dynamic_cast与其他转换不同的地方dynamic_cast涉及运行时类别检查,如果绑定到引用或指针的对象不是目标类型的对象,则dynamic_cast失败。如果是指针类型失败,则dynamic_cast的返回结果为0,如果是引用类型的失败,则抛出一个bad_cast错误。 注意:dynamic_cast在将父类cast到子类时,父类必须要有虚函数。因为dynamic_cast运行时需要检查RTTI信息。只有带虚函数的类运行时才会检查RTTI。
新闻热点
疑难解答