单例模式--C++

本文介绍了单例模式的三种实现方式,通过将构造函数声明为私有确保类仅有一个实例,并提供全局访问点。展示了如何使用静态成员变量和条件判断来控制实例的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式:将构造函数声明为私有的,这样就不能被外部调用构造函数来构造对象了,甚至可以将析构函数也声明为私有的,这样就只有自己能够删除自己了。
保证一个类只有一个实例,对外提供一个访问它的全局访问点。
//方式一
class Singleton
{
public:
    static Singleton& getInstance()
    {
        static Singleton instance;
        return instance;
    }

private:
    Singleton()
    {
        cout << "Singleton()" << endl;
    }
    ~Singleton()
    {
        cout << "~Singleton()" << endl;
    }
};
//方式二
class Singleton
{
public:
    static Singleton* getInstance()
    {
        return &instance;
    }

private:
    Singleton()
    {
        cout << "Singleton()" << endl;
    }
    ~Singleton()
    {
        cout << "~Singleton()" << endl;
    }
    static Singleton instance;
};

Singleton Singleton::instance;

int main(int argc, char *argv[])
{
    cout << Singleton::getInstance() << endl;
    cout << Singleton::getInstance() << endl;
    cout << Singleton::getInstance() << endl;

    return 0;
}
//方式三
class Singleton
{
public:
    static Singleton* getInstance()
    {
        if(instance == NULL)
            instance = new Singleton();

        return instance;
    }
    ~Singleton()
    {
        cout << "~Singleton()" << endl;
    }

private:
    Singleton()
    {
        cout << "Singleton()" << endl;
    }
    static Singleton *instance;
};

Singleton *Singleton::instance = NULL;

int main(int argc, char *argv[])
{
    cout << Singleton::getInstance() << endl;
    cout << Singleton::getInstance() << endl;
    cout << Singleton::getInstance() << endl;
    delete Singleton::getInstance();

    return 0;
}

详情请点击:https://www.cnblogs.com/xiehongfeng100/p/4781013.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值