【コードあり】シングルトンパターンのC++版サンプルコード
WRITER
この記事を書いている人 - WRITER -
ゲーム音楽をこよなく愛するものです。
このブログではゲーム音楽に関する記事や大学生活に関する記事、ブログに関する記事を紹介します。
超絶田舎の地方国立大学に通ってます。週1くらいで更新してるので暇なときに見に来てください。たまに面白い記事書いてます。彼女募集中!!←≪重要≫
今回はデザインパターンのシングルトンパターンのサンプルコードを作成しました。
記事の作成に当たってインプットには以下の書籍やサイトを使って勉強しました。
間違い等あればコメントしてもらえると対応します。
created by Rinker
¥5,280 (2024/12/09 10:14:14時点 Amazon調べ-詳細)
目次
シングルトンパターンの概要
シングルトンパターンは、特定のクラスがインスタンス化される際に、そのクラスのインスタンスが必ず1つしか生成されないようにします。
c++のサンプルコード
シングルトンクラス(singleton.h)
#include <iostream>
#include <thread>
#include <mutex>
class Singleton {
public:
// シングルトンインスタンスを取得する静的メソッド
static Singleton& getInstance() {
// インスタンスがまだ作成されていない場合は作成する
// 二重ロックパターンを使うことでスレッドセーフにする
if (!instance) {
std::lock_guard<std::mutex> lock(mutex_);
if (!instance) {
instance = new Singleton();
}
}
return *instance;
}
// ログを出力するメソッド
void log(const std::string& message) {
std::cout << "[LOG] " << message << std::endl;
}
private:
// プライベートコンストラクタ
Singleton() {}
// 静的メンバー変数
static Singleton* instance;
// インスタンス化のためのmutex
static std::mutex mutex_;
};
Main関数(main.cpp)
#include "singleton.h"
// 静的メンバー変数の初期化
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mutex_;
int main() {
// シングルトンインスタンスを取得して利用する
Singleton& singleton = Singleton::getInstance();
singleton.log("Hello, Singleton!");
return 0;
}
サンプルコードの実行結果
実行結果は以下のようになります
[LOG] Hello, Singleton!
この記事を書いている人 - WRITER -
ゲーム音楽をこよなく愛するものです。
このブログではゲーム音楽に関する記事や大学生活に関する記事、ブログに関する記事を紹介します。
超絶田舎の地方国立大学に通ってます。週1くらいで更新してるので暇なときに見に来てください。たまに面白い記事書いてます。彼女募集中!!←≪重要≫