我比较常用的一种实现如下:
class Singleton
{
private:
Singleton() {};
//在这里,拷贝构造函数给出声明即可,无需函数体,因为它绝对不会被调用。
//虽然不会被调用,但养成好习惯,仍将参数声明为常引用。
//const 是为了对输入实参只读,不改写。
//若不声明为引用,而声明为对象的话,则非法。
//因为调用拷贝构造函数传参时,会再次调用拷贝构造函数,继而造成无限递归。
Singleton(const Singleton &);
public:
static Singleton * instance()
{
static Singleton obj;
return &obj;
}
};
C++11,可写成
public:
Singleton(const Singleton &) = delete;
关于单例模式,https://blog.youkuaiyun.com/Hackbuteer1/article/details/7460019这篇博客有一些讨论 。