#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(); 了.