简单工厂模式的有关问题求各位指点! 以下代码中的singlecoreA和singlecoreB的析构函数如何析构,程序运行出来的结果没有打印这两个的析构

简单工厂模式的问题求各位指点!!!! 以下代码中的singlecoreA和singlecoreB的析构函数怎么析构,程序运行出来的结果没有打印这两个的析构,
求各位指点!!!!
以下代码中的singlecoreA和singlecoreB的析构函数怎么析构,程序运行出来的结果没有打印这两个的析构


Simple Factory.h

#ifndef SIMPLE FACTORY_H
#define SIMPLE FACTORY_H

#include <iostream>

using namespace std;

//enum CTYPE{CoreA, CoreB};

class SingleCore//处理器
{

public:

SingleCore()
{
cout<<" Constructed SingleCore "<<endl;
}

~SingleCore()
{
cout<<" Destructed SingleCore "<<endl;
}

virtual void show() = 0;
};

class SingleCoreA : public SingleCore//A处理器
{

public:

SingleCoreA()
{
cout<<" Constructed SingleCore A "<<endl;
}

~SingleCoreA()
{
cout<<" Destructed SingleCore A "<<endl;
}

void show()
{
cout<<" SingleCore A "<<endl;
}
};

class SingleCoreB : public SingleCore//B处理器
{

public:

SingleCoreB()
{
cout<<" Constructed SingleCore B "<<endl;
}

~SingleCoreB()
{
cout<<" Destructed SingleCore B "<<endl;
}

void show()
{
cout<<" SingleCore B "<<endl;
}
};

//这两种处理器由唯一的一个工厂来生产
//在内部判断该生产哪一种
class Factory
{

public:

Factory()
{
cout<<" Constructed Factory "<<endl;
}

~Factory()
{
cout<<" Destructed Factory "<<endl;
}


//根据类型判断产生哪一个类的实例
SingleCore *CreateSingleCore(int type)
{
switch(type)
{
case 1:
return new SingleCoreA();
break;

case 2:
return new SingleCoreB();
break;

default:
cout<<"No type of the core"<<endl;

}
}

};

#endif

main.cpp

#include <iostream>

using namespace std;

#include "Simple Factory.h"

int main()
{
int type;

cout<<"Input a type of SingleCore: ";
cin>>type;

if(type == 1 || type == 2)
{
Factory *factory = new Factory();
SingleCore *singlecore = factory->CreateSingleCore(type);
singlecore->show();

delete singlecore;
delete factory;
}
else
cout<<"no creating object"<<endl;

cout<<endl;

return 0;

}


------解决方案--------------------
必须虚析构函数,才能析构子类对象。
析构时,只能析构父类对象。

任何有虚函数的类,最好都要有虚析构函数。
这样delete 父类指针,才能够析构子类对象;

不论,有没有虚析构函数,父类对象总是能够析构的,只要子类析构了,就不会有问题。

------解决方案--------------------
virtual ~SingleCore()