继承中派生类指针转换为基类指针
2015-03-24 18:01
330 查看
#include "stdafx.h" #include <memory> using namespace std; class Base { public: Base(){} ~Base(){} virtual void Deal() { int n; n = 6; } private: }; class A : public Base { public: A(){} ~A(){} virtual void Deal() override { int i; i = 1; } void xxxx() { } private: }; int _tmain(int argc, _TCHAR* argv[]) { shared_ptr<A> a(new A()); shared_ptr<Base> p = a; p->Deal();//ok,继承覆盖了基类Deal函数 p->xxxx();//class "Base" 没有成员 "xxxx" return 0; }
如何才能调用继承类(A类)的成员函数xxxx呢?
转换方法:
shared_ptr<A> sp = dynamic_point_cast<A>(p);
此时,即可执行A类中的函数 sp.xxxx(); 了.智能指针用:dynamic_pointer_cast,
一般指针用:dynamic_cast
相关文章推荐
- 【C++的探索路11】继承与派生之拓展篇--多形式派生以及派生类指针转换
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
- 基类和派生类指针转换--dynamic_cast
- C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题
- B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
- 多态继承情况下,有一个基类指针指向派生类对象,如何用它调用基类的虚函数?
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
- C++虚继承和多重继承时的指针类型转换
- C++多重继承下的指针类型转换
- C++多重继承下的指针类型转换
- 基类和派生类指针转换--dynamic_cast
- 二十六、继承(三) 转换与继承、派生类到基类的转换、基类到派生类的转换
- 基类指针指向派生类对象和隐式转换
- 面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析
- C++私有继承派生类转换成基类引用实例
- 当基类被继承后this指针将代表派生类的this指针
- 基类指针与派生类指针的相互转换
- B继承自A,A指针无法隐式转换为B指针,函数参数只管指针类型,与实际指向对象无关
- C++多重继承下的指针类型转换 图解
- 空类大小及指针转换(多继承)