ホームページ  >  記事  >  バックエンド開発  >  C++ 静的関数を使用してシングルトン パターンを実装できますか?

C++ 静的関数を使用してシングルトン パターンを実装できますか?

WBOY
WBOYオリジナル
2024-04-16 12:33:01438ブラウズ

静的関数を使用して C でシングルトン モードを実装するには、次の手順を実行します。一意のインスタンスを格納するプライベート静的メンバー変数を宣言します。コンストラクターで静的メンバー変数を初期化します。 public static 関数を宣言して、クラスのインスタンスを取得します。

C++ 静态函数可以用来实现单例模式吗?

#静的関数を使用して C にシングルトン モードを実装する

はじめに

単一インスタンスpattern は、クラスのインスタンスが 1 つだけ存在することを保証する設計パターンです。 C では、静的関数を使用してシングルトン パターンを簡単に実装できます。

#構文

静的関数は、オブジェクトではなくクラスに属する関数です。これらは

static

キーワードを使用して宣言され、構文は次のとおりです。 <pre class='brush:cpp;toolbar:false;'>static return_type function_name(argument_list);</pre>

シングルトン モードの実装

静的関数を使用してシングルトンを実装するにはモードの場合は、次の手順を実行してください:

クラスの唯一のインスタンスを保存するプライベート静的メンバー変数を宣言します:
  1. private:
        static ClassName* instance;
静的メンバー変数を初期化します。クラスのコンストラクター:
  1. ClassName::ClassName() {
        if (instance == nullptr) {
            instance = this;
        }
    }
クラスのインスタンスを取得するパブリック静的関数を宣言します:
  1. public:
        static ClassName* getInstance() {
            if (instance == nullptr) {
                instance = new ClassName();
            }
            return instance;
        }
実用的なケース

カウンタ値の追跡を担当する

Counter

クラスがあると仮定します。 <pre class='brush:cpp;toolbar:false;'>class Counter { private: static Counter* instance; int count; public: Counter(); static Counter* getInstance(); void increment(); int getCount(); };</pre> 以下は、

Counter

クラスの実装です。 <pre class='brush:cpp;toolbar:false;'>// 构造函数 Counter::Counter() : count(0) {} // 获取类的实例 Counter* Counter::getInstance() { if (instance == nullptr) { instance = new Counter(); } return instance; } // 增加计数器 void Counter::increment() { ++count; } // 获取计数器值 int Counter::getCount() { return count; }</pre>

使用例

getInstance()

関数を使用して、Counter クラスのインスタンスを複数回取得できます。 <pre class='brush:cpp;toolbar:false;'>Counter* counter1 = Counter::getInstance(); counter1-&gt;increment(); Counter* counter2 = Counter::getInstance(); counter2-&gt;increment(); std::cout &lt;&lt; counter1-&gt;getCount() &lt;&lt; std::endl; // 输出:2</pre>

結論

静的関数を使用してシングルトン パターンを実装することは、シンプルで効果的な手法です。これにより、クラスにシングルトン制約を適用して、常に同じインスタンスが返されるようにすることができます。

以上がC++ 静的関数を使用してシングルトン パターンを実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。