C++版本:
class Singleton { public : static Singleton & getInstance() { return instance; } private : Singleton() { } ; Singleton( const Singleton & ); Singleton & operator = ( const Singleton & ); static Singleton instance; } ; Singleton Singleton : : instance;
注意:
1.getInstance返回的是引用,如果不是引用则调用了一次拷贝构造,产生临时对象。
2.拷贝构造和赋值运算符要私有化,否则有可能产生新的对象。
如不对拷贝构造私有化执行下面语句
Singleton s1 = Singleton::getInstance();
这里调用拷贝构造产生了新的对象s1,虽然s1是对static instance的浅拷贝,但这不符合单例的特征。
3.注意对static instance的定义性说明。
java版本:
class Singleton { private Singleton() { } ; private static Singleton instance = new Singleton(); public static Singleton createInstance() { return instance; } }