标签:
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点
第一个版本:
#include <iostream> using namespace std; class Singleton{ static Singleton s; //可以在类定义中声明类自身的对象的引用或者指向该类的对象,也可以使用static修饰该对象 int i; Singleton(int x):i(x){}; Singleton(const Singleton&);//不允许拷贝 Singleton& operator=(Singleton&);//不允许赋值 public: static Singleton& instance(){return s;} int getValue(){return i;} void setValue(int x){i=x;} }; Singleton Singleton::s(88); int main(){ Singleton& s=Singleton::instance(); cout<<s.getValue()<<endl; Singleton& s2=Singleton::instance(); s2.setValue(9); cout<<s.getValue()<<endl; //Singleton s3=Singleton::instance(); //error 声明拷贝构造函数为私有,不允许拷贝 getchar(); return 0; }
#include <iostream> using namespace std; class Singleton{ int i; Singleton(int x):i(x){}; Singleton(const Singleton&);//不允许拷贝 Singleton& operator=(Singleton&);//不允许赋值 public: static Singleton& instance(){ static Singleton s(88); //成员函数内部的静态对象创建实现单例模式 return s; } int getValue(){return i;} void setValue(int x){i=x;} }; int main(){ Singleton& s=Singleton::instance(); cout<<s.getValue()<<endl; Singleton& s2=Singleton::instance(); s2.setValue(9); cout<<s.getValue()<<endl; //Singleton s3=Singleton::instance(); //error 声明拷贝构造函数为私有,不允许拷贝 getchar(); return 0; }
标签:
原文地址:http://blog.csdn.net/janestar/article/details/51338596