C++父類強制轉換為子類用法
阿新 • • 發佈:2019-01-04
-----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
-----Base.cpp#ifndef _SUB_H_ #define _SUB_H_ #include"Base.h" class subclass:public base { public: int c; virtual void print() { cout<<"this is subclass"; } }; #endif
#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; }