C シングルトンの例
C では、シングルトン パターンにより、プログラムの実行全体を通じてクラスのインスタンスが 1 つだけであることが保証されます。シングルトン実装の改良されたサンプルを次に示します:
<code class="cpp">class A { private: static A* m_pA; explicit A(); // Constructor should be private A(const A&) = delete; // Prevent copying A& operator=(const A&) = delete; // Prevent assignment virtual ~A(); // Destructor public: static A& GetInstance(); // Return a reference to the instance static void FreeInstance(); // Free the instance when no longer needed void WORK1(); void WORK2(); void WORK3(); }; A& A::GetInstance() { if (m_pA == nullptr) { static A instance; // Lazy initialization m_pA = &instance; } return *m_pA; // Return a reference to the instance } void A::FreeInstance() { delete m_pA; m_pA = nullptr; }</code>
ディスカッション:
なぜポインターを返さないのか?
提供されているサンプル コードは、最初に Singleton インスタンスへのポインターを返します。ただし、参照を返すことは、インスタンスの手動割り当て解除を防ぐため、シングルトンに適していると考えられます。オブジェクトの有効期間は、Singleton クラス自体によって管理される必要があります。
遅延初期化:
改良されたサンプルでは、関数メソッドによって初期化される静的変数を使用して、遅延初期化を実現します。この手法により、必要な場合にのみシングルトンが作成されるようになり、効率が向上します。
保証された破壊:
参照を返すことにより、シングルトンはインスタンスが確実に作成されるようにします。早期に破壊されません。また、シングルトンへの参照が自動的に解放されるため、プログラムの終了時に適切な破棄が行われます。
追加メモ:
以上がC シングルトン実装では参照を返すことが好ましいのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。