C++ 单例模式
小明家有一只猫小黑,他邻居小胖家没有,但是小黑会跑去小胖家吃鱼,当然在自己家也吃鱼,但是鱼是不是不同的鱼,猫是同一只猫。定义一只猫CAT的单例模型。
class CAT
{
public:
static CAT *instance();
~CAT();
private:
cat();
void eatFish();
void run();
};
CAT *CAT::m_cat = NULL;
CAT *CAT::instance()
{
if (m_model == NULL)
m_cat = new CAT();
return m_cat;
}
CAT::CAT()
{
}
void CAT::eatFish()
{
std::cout <<“cat eat fish”<<endl;
}
void CAT::run()
{
std::cout <<“cat is running ”<<endl;
}
CAT::~CAT()
{
}
void main()
{
std::cout<<"xiao pang say:"<<CAT::instance->eatfish();
std::cout<<"xiao ming say:"<<CAT::instance->eatFish();
}
这个单例在单线程模式是是安全的,在多线程模式下存在问题。
懒汉模式:
饿汉模式: