您的位置:首页 > 编程语言 > C语言/C++

C++父类强制转换为子类用法

2017-07-15 11:46 2266 查看
-----Base.h

#ifndef _BASE_H_
#define _BASE_H_
#include<iostream>
using namespace std;
class subclass;
class base
{
public:
int a;
int b;
subclass *get_subclass();
virtual void print()
{
cout<<"this is base";
}
};
#endif


-----Sub.h

#ifndef _SUB_H_
#define _SUB_H_
#include"Base.h"
class subclass:public base
{
public:
int c;
virtual void print()
{
cout<<"this is subclass";
}
};
#endif


-----Base.cpp

#include"Sub.h"
subclass *base::get_subclass()
{
subclass *sub=dynamic_cast<subclass *>(this);//通过父类强制转换为子类的方式,在父类的成员函数中也可以访问子类的成员。但是运行时候调用该函数的对象必须是子类对象,否则会错误
sub->c=3;
return sub;
}


-----Main.cpp

#include"Sub.h"
#include"Base.h"
int main()
{
subclass *sub=new subclass();
sub->a=1;
sub->b=2;
subclass *son2 =sub->get_subclass();//调用的是继承于父类的函数
cout<< son2->c << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  继承 c 强制转换