#include <iostream> using namespace std; class Singleton { public: //提供访问单例的公共接口 static Singleton& Singleton::getInstance() { static Singleton s; //静态变量保证只有一个实例 //这样写还有一个好处就是直到用户调用 //getInstance函数才会生成第一个实例 return s; } private: //构造、拷贝构造、赋值函数私有化,防止其他实例的生成 Singleton(){}; Singleton(Singleton& other); Singleton& operator=(Singleton &other); }; int main() { Singleton& s1 = Singleton::getInstance(); printf("%p\n", &s1); Singleton& s2 = Singleton::getInstance(); printf("%p\n", &s2); //Singleton s3; //报错 //Singleton s4 = s1; //报错 return 0; }