最も優雅なC++単例類の書き方だと思います
2602 ワード
class Singleton
{
public:
static Singleton &instance() {
static Singleton singleton;
return singleton;
}
Singleton (Singleton &&) = delete;
Singleton (Singleton const&) = delete;
private:
Singleton() = default;
};
その中のポイント:
If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
private
として定義する.コンストラクション関数にコードが不要な場合は、default
を直接割り当てることができます.使用方法
Singleton &singleton = Singleton ::instance();