64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class Base
{
public:
Base(){}
virtual ~Base()
{
cout<<"Base Destructor!"<<endl;
}
};
class Derived : public Base
{
public:
Derived(){}
~Derived()
{
cout<<"Derived Destructor!"<<endl;
}
};
class Factory
{
public:
Factory(){}
~Factory()
{
delete m_pBase; //如果Base析构为protected则无法访问
}
Base* Create()
{
m_pBase = new Derived();
return m_pBase;
}
private:
Base* m_pBase;
};
int main()
{
Base * pB = new Derived();
delete pB;//如果Base析构不是public或protected 则内存泄漏
Factory f;
f.Create();
return 0;
}