C++父类强制转换为子类用法
2017-07-15 11:46
2266 查看
-----Base.h
-----Sub.h
-----Base.cpp
-----Main.cpp
#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++的子类与父类强制转换产生的问题
- c++ 父类指针转换为子类指针后调用子类的成员函数问题
- c++父类指针强制转为子类指针后的测试(帮助理解指针访问成员的本质)(反多态)
- Java中父类强制转换成子类的原则
- 父类对象到底能不能强制转换为子类对象
- Java中父类强制转换为子类的可能
- C++中子类和父类之间的相互转换
- java 父类强制转换为子类
- c++父类指针和子类指针相转换:
- C#中 父类与子类相互强制转换之实验
- Java中父类强制转换成子类的原则
- C++中子类和父类之间的相互转换
- C++子类 父类的相互转换 和 虚函数
- C++父类和子类之间的转换
- C#中 父类与子类相互强制转换之实验
- Java中父类强制转换成子类的原则
- C#中 父类与子类相互强制转换之实验(转帖)
- c++父类与子类的转换(QT环境下)
- java搜索 里 可以把一个父类强制转换成一个子类 不能把一个子类强制转换成一个父类? 对吗?
- C++ 智能指针类型转换(父类->子类,子类->父类)