// EX_EXAM.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
virtual void foo() { cout<<"A foo"<<endl; }
void pp() { cout<<"A pp"<<endl; }
};
class B: public A
{
public:
void foo() { cout<<"B foo"<<endl; }
void pp() { cout<<"B pp"<<endl; }
void FunctionB() { cout<<"Excute FunctionB!"<<endl; }
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
B b;
A *pa=&b;
pa->foo();
pa->pp();
if (B *pb=dynamic_cast<B*>(pa))
{
cout<<"Convert from B to A successfully"<<endl;
(dynamic_cast<B*>(pa))->FunctionB();
(dynamic_cast<B*>(pa))->foo();
(dynamic_cast<B*>(pa))->pp();
(*pa).foo();
}
else
cout<<"Cannot convert from B to A"<<endl;
return 0;
}
C++ 中【子类转父类】和【父类转子类】的方法
最新推荐文章于 2026-05-10 05:30:10 发布
本文通过一个C++示例程序展示了如何使用动态类型转换(dynamic_cast)在基类指针指向派生类对象时进行安全的向下转型,并调用派生类特有的成员函数。
1万+

被折叠的 条评论
为什么被折叠?



