由dynamic_cast引发的多态有关问题
由dynamic_cast引发的多态问题
为了测试dynamic_cast的用法,设计了间单的程序:
子转父成功转换:
父转子编译失败:
问题如下:
1 dynamic_cast应用应该是与多态和虚函数相关的,但是上面的三个类均没有虚函数,却完成了子转父的转换,
2 添加了父转子转换后程序编译不通过了,难道不应该是指针返回NULL吗?
------解决方案--------------------
变量a和b就和class C没有关系,你没看出来吗?能转化成功才是问题。。。
为了测试dynamic_cast的用法,设计了间单的程序:
#include<iostream>
using namespace std;
class A{};
class B:public A{};
class C:public B{};
int main()
{
A a;
B b;
A *pa = dynamic_cast<A*>(&b);
if(pa==NULL){cout << "子转父转换失败!" << endl;}
else cout << pa << endl;
// C *pc = dynamic_cast<C*>(&b);
// if(pc==NULL){cout << "父转子转换失败!" << endl;};
return 0;
}
子转父成功转换:
父转子编译失败:
问题如下:
1 dynamic_cast应用应该是与多态和虚函数相关的,但是上面的三个类均没有虚函数,却完成了子转父的转换,
2 添加了父转子转换后程序编译不通过了,难道不应该是指针返回NULL吗?
------解决方案--------------------
变量a和b就和class C没有关系,你没看出来吗?能转化成功才是问题。。。