C++单例模式实验多态
#include <iostream>
using namespace std;
class Ceshi
{
public:
~Ceshi();
//static Ceshi* getCeshi();
virtual void printf();
Ceshi*next;
protected:
Ceshi();
static Ceshi* ceshi;
};
class A:public Ceshi
{
public:
void printf();
static Ceshi* getA();
private:
A();
~A();
};
class B :public Ceshi
{
public:
void printf();
static Ceshi* getA();
private:
B();
~B();
};
Ceshi* Ceshi::ceshi = NULL;
Ceshi* A::getA() {//留一个接口创建A对象
if (ceshi==NULL)
{
ceshi = new A();
ceshi->next = NULL;
}
else
{
Ceshi* another = new A();//创建异质链表
another->next = ceshi;
ceshi = another;
}
return ceshi;
}
Ceshi* B::getA() {//留一个接口创建B对象
if (ceshi == NULL)
{
ceshi = new B();
ceshi->next = NULL;
}
else
{
Ceshi* another = new B();//创建异质链表
another->next = ceshi;
ceshi = another;
}
return ceshi;
}
Ceshi::Ceshi()
{
cout << "构造Ceshi" << endl;
}
Ceshi::~Ceshi()//单例模式一般不需要手动析构
{
cout << "析构Ceshi" << endl;