class Interface
{
public:
virtual ~Interface() { std::cout << "Interface:: ~Interface()" << std::endl; }
virtual void Show() = 0;
};
class CBaseInter :public Interface
{
public:
CBaseInter() { std::cout << " CBaseInter::CBaseInter" << std::endl; }
virtual ~CBaseInter() { std::cout << " CBaseInter::~CBaseInter" << std::endl; }
virtual void Show() { std::cout << " CBaseInter::void Show()" << std::endl; }
};
Interface* pBaseinter = new CBaseInter();
pBaseinter->Show();
if (nullptr != pBaseinter)
{
delete pBaseinter;
pBaseinter = nullptr;
}
CBaseInter* pBase = new CBaseInter();
pBase->Show();
if (nullptr != pBase)
{
delete pBase;
pBase = nullptr;
}
结论:
1 .当接口类指向实现类时候:
1)接口类加virtual,则会调用实现类的析构函数
2)接口类不加virtual ,则不会调用实现类的析构函数
2. 当指向实现类的时候:
接口类加不加virtual,实现类和接口类的都会调用析构函数
这是c++的继承,多态的virtual相关的知识,记录一下,以便以后!