继承中派生类指针转换为基类指针

智能指针与C++多态性实践
本文深入探讨了C++中智能指针的使用及其与多态性的结合应用,通过具体代码实例展示了如何在基类指针上调用子类特有的成员函数。文章详细解释了动态类型转换(`dynamic_cast`与`dynamic_pointer_cast`)的用法,并提供了实践案例以助于理解。
#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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值