用static成员对象实现单例模式

来源:互联网 发布:淘宝使用感受 编辑:程序博客网 时间:2024/06/05 20:56
/* * egg.h * *  Created on: 2011-08-01 *      Author: mweng */#include<iostream>using namespace std;class Egg{private:static Egg e;int i;Egg(int ii):i(ii){}Egg(const Egg &t);public:int val(){return i;}static Egg* instance(){return &e;}};
/* * egg.cpp * *  Created on: 2011-08-01 *      Author: mweng */#include"../header/egg.h"Egg Egg::e(110);

/* * main.cpp * *  Created on: 2011-08-01 *      Author: mweng */#include"../header/egg.h"#include<iostream>using namespace std;int main(){//不能再新建别的Egg对象cout<<"Egg number:"<<Egg::instance()->val()<<endl;;return 1;}

利用类中静态成员对象的初始化方法,将类的构造函数声明为私有的,在类A中放置一个类A的静态成员对象a,可以通过类访问这个静态对象a,不能创建新的A的实例,在声明私有拷贝构造函数后,使其也不能通过以下方法构造对象:
Egg s1=*Egg::instance();
Egg s2=Egg(*Egg::instance());