保证一个类仅有一个实例,并提供一个访问它的全局访问点 // Singleton.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; class Singleton { public: static Singleton* Instance() { if( 0 ==_instance) { _instance=new Singleton; } return _instance; }; void method1() { //实例的方法 cout<<_instance<<"/n"; }; private: Singleton(void){} virtual ~Singleton(void){} static Singleton* _instance; // 它的唯一工作就是在析构函数中删除Singleton的实例 class DeleteSingletonPtr { public: ~DeleteSingletonPtr() { if (Singleton::_instance) delete Singleton::_instance; } }; // 定义一个静态成员,在程序结束时,系统会调用它的析构函数 static DeleteSingletonPtr DeletePtr; }; // 定义并初始化。 Singleton* Singleton::_instance = 0; int _tmain(int argc, _TCHAR* argv[]) { Singleton::Instance(); Singleton *p1=Singleton::Instance(); Singleton *p2=Singleton::Instance(); Singleton *p3=Singleton::Instance(); p1->method1(); p2->method1(); p3->method1(); if (p1==p2) { cout<<"两个对象相等"<<"/n"; } getchar(); return 0; }