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

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

WBOY
リリース: 2024-04-16 12:33:01
オリジナル
498 人が閲覧しました

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

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

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

はじめに

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

#構文

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

static

キーワードを使用して宣言され、構文は次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>static return_type function_name(argument_list);</pre><div class="contentsignin">ログイン後にコピー</div></div>

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

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

クラスの唯一のインスタンスを保存するプライベート静的メンバー変数を宣言します:
  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

クラスがあると仮定します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>class Counter { private: static Counter* instance; int count; public: Counter(); static Counter* getInstance(); void increment(); int getCount(); };</pre><div class="contentsignin">ログイン後にコピー</div></div> 以下は、

Counter

クラスの実装です。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>

使用例

getInstance()

関数を使用して、Counter クラスのインスタンスを複数回取得できます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>

結論

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート