亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++單例模式怎么寫

c++
小億
89
2024-01-19 09:16:16
欄目: 編程語言

在C++中實現單例模式可以通過以下方式來實現:

class Singleton {
private:
    // 私有構造函數,防止外部創建對象
    Singleton() {}

    // 靜態私有成員變量,用于保存單例對象
    static Singleton* instance;

public:
    // 靜態公有成員函數,用于獲取單例對象
    static Singleton* getInstance() {
        if (instance == nullptr) {
            instance = new Singleton();
        }
        return instance;
    }
};

// 初始化靜態成員變量
Singleton* Singleton::instance = nullptr;

在這個實現中,通過將構造函數設置為私有,可以防止外部直接創建對象。通過靜態成員變量和靜態成員函數,可以實現全局唯一的單例對象,并通過getInstance函數來獲取該對象。

需要注意的是,這個實現是簡單的懶漢式單例模式,只有在第一次調用getInstance函數時才會創建對象。如果需要線程安全,可以使用鎖來保證只有一個線程可以創建對象。

class Singleton {
private:
    // 私有構造函數,防止外部創建對象
    Singleton() {}

    // 靜態私有成員變量,用于保存單例對象
    static Singleton* instance;
    
    // 靜態私有成員變量,用于加鎖
    static std::mutex mtx;

public:
    // 靜態公有成員函數,用于獲取單例對象
    static Singleton* getInstance() {
        if (instance == nullptr) {
            std::lock_guard<std::mutex> lock(mtx);
            if (instance == nullptr) {
                instance = new Singleton();
            }
        }
        return instance;
    }
};

// 初始化靜態成員變量
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mtx;

在這個實現中,使用了std::mutex來實現線程安全。在第一次調用getInstance時,使用std::lock_guardmtx加鎖,保證只有一個線程可以創建對象。

0
刚察县| 樟树市| 定襄县| 乌审旗| 宁河县| 哈巴河县| 康马县| 靖江市| 楚雄市| 雅江县| 洱源县| 封开县| 大宁县| 宜良县| 闻喜县| 慈溪市| 莱阳市| 正阳县| 佛山市| 临桂县| 潮州市| 勐海县| 巴中市| 祥云县| 云阳县| 临澧县| 洛宁县| 崇文区| 西盟| 嘉峪关市| 宜宾县| 邓州市| 台东市| 景谷| 青州市| 寿宁县| 乐亭县| 思南县| 盘山县| 桂阳县| 沁水县|