【C++】利用限制构造实现一个简单的单例模式

一.什么是限制构造

通过对构造函数加以限制,防止通过类直接定义对象,只能通过特殊方法获取到对象;

二.将构造函数放在protected权限内来限制构造

将构造函数放在protected权限中,导致不能通过类直接定义对象,可通过继承(非private继承)解决,通过派生类来访问基类的私有变量;

示例代码

#include <iostream>
using namespace std;
//限制构造:将构造函数放在protected权限中,导致不能通过类直接定义对象,可通过继承解决
class A{
   
    public:
    int setval(int val = 10)
    {
   
        value = val;
        return value;
    }
    protected:
    A()
    {
   
        cout<<"构造函数"<<endl;
    }
    private:
    int value;
};

class B : public A{
   

};

int main(int argc,char *argv[])
{
   
    B b;
    cout<<b.setval()<<endl;
    
    return 0;
}

三.将构造函数放在private权限内来限制构造

1.将构造函数放在private权限中,导致不能通过类直接定义对象,可通过友元函数或static修饰的静态方法(推荐)解决;
2.不能访问构造函数,无法定义对象接收返回值,只能定义对象指针,new会访问到构造函数;

友元函数示例代码

#include <iostream>
using namespace std;
//限制构造:将构造函数放在private权限中,导致不能通过类直接定义对象,可通过友元或static修饰的静态方法(推荐)解决
cl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值