[设计模式]C++实现单例

  • 单例指对象只能被创建一次,不可重复创建

  • 利用C++ static 关键字实现静态局部变量,即使重复声明返回的也是第一次创建的对象

代码:

int x = 20;
​
class Singleton
{
private:
    Singleton() { val = x++; cout << "Obeject Create!\n"; } //私有构造函数,只能通过Get方法调用
    ~Singleton() { cout << "Object Delete!\n"; }
public:
    int val;
    static Singleton *GetInstance()
    {
        static Singleton ret; //static类型变量,仅在首次声明时创建赋值
        return &ret;
    }
};
​
int main()
{
    Singleton *s = Singleton::GetInstance();
    cout << s->val << '\n';  //验证
    Singleton *s2 = Singleton::GetInstance();
    cout << s->val << '\n';
    return 0;
}

运行结果:

[设计模式]C++实现单例_第1张图片

你可能感兴趣的:([设计模式]C++实现单例)