1. 程式人生 > >C++父類強制轉換為子類用法

C++父類強制轉換為子類用法

-----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;
}