// sample 1
class Singleton {
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
Singleton(const Singleton& src) = delete;
Singleton& operator=(const Singleton& src) = delete;
void init() {
...// init resource
}
private:
Singleton() {}
};
// sample 2
class Singleton {
public:
static const Singleton* getInstance() {
return instance;
}
Singleton(const Singleton& src) = delete;
Singleton& operator=(const Singleton& src) = delete;
private:
Singleton() {}
static const Singleton* instance;
};
const Singleton* Singleton::instance = new Singleton;
这两者在main()开始之前已经被初始化了,不用考虑多线程的问题。