首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 單例模式:線程不安全版實現與核心要點

     編輯:C++ 入門

C++ 單例模式:線程不安全版實現與核心要點

單例模式確保某類全局僅有一實例,並提供全局訪問點。是面試高頻考點,也是最基礎的創建型模式。

核心實現要素

  1. 私有/保護構造函數:防止外部 new 實例化。
  2. 靜態私有實例指針:static Singleton* _instance 唯一實例緩存。
  3. 公有靜態獲取方法:Instance() 惰性初始化並返回實例。

代碼示例(非線程安全)

class Singleton {
public:
    static Singleton* Instance() {
        if (_instance == 0) _instance = new Singleton();
        return _instance;
    }
protected:
    Singleton() { cout << "Singleton..." << endl; }
private:
    static Singleton* _instance;
};
Singleton* Singleton::_instance = 0;

關鍵點解析

  • protected 構造函數允許繼承,若不需繼承可用 private。
  • 靜態成員函數無 this 指針,可直接類名調用。
  • 首次調用 Instance() 才創建實例(惰性單例)。

進階話題(未在代碼中體現)

  • 線程安全:雙重檢查鎖、std::call_once、C++11 局部靜態變量。
  • 防拷貝/移動:刪除拷貝構造/賦值運算符。
  • 銷毀控制:智能指針管理或 atexit 註冊銷毀。

理解單例本質是「控制實例化過程」,面試時能手寫基礎版並討論線程安全優化即可過關。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved