单例模式

来源:互联网 发布:爱淘宝1元红包口令 编辑:程序博客网 时间:2024/05/03 19:30

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点

第一个版本:

#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;}







1 0
原创粉丝点击