【面试题】如何判断一个类是不是另一个的子类

来源:互联网 发布:java主方法与类重名 编辑:程序博客网 时间:2024/06/05 07:51

听到这个题的时候我想到了当时的强制转化中有一种转换可以将父类指针转换为子类指针,我就试了以下,可以的,下面先简单介绍这种转换

dynamic_cast用于将一个父类对象的指针转换为子类对象的指针或引用(动态转换)
向上转型:子类对象指针->父类指针/引用(不需要转换)
向下转型:父类对象指针->子类指针/引用(用dynamic_cast转型是安全的)
1 .   dynamic_cast只能用于含有虚函数的类
2 .   dynamic_cast会先检查是否能转换成功,能成功则转换,不能则返回0

代码

#include <iostream>#include<stdlib.h>using namespace std;class A{public:virtual void  fun(){}};class B :public A{public:virtual void  fun(){}};void test(){A* pc=new A;B* cp=dynamic_cast<B*>(pc);if(sizeof(B)==sizeof(A)){cout<<"ok"<<endl;}cout<<cp<<endl;}


0 0
原创粉丝点击