C++构造函数与析构函数的访问权限问题

默认情况下C++的构造函数和析构都是public类型的,但有时候我们会将其设为private类型:

    1.将析构函数设为private类型,构造函数public类型:

        这种情况下由于系统不能在对象离开作用域是调用析构函数进行清理工作,故不能通过定义对象的方式来获取对象,

但是可以通过new从堆上来分配对象,然后通过定义一个public类型的接口调用析构函数进行清理工作

   2.将构造函数设为private类型:

        这种情况下无论是在栈上还是堆上都不能从外部获取对象,但我们可以通过static成员方法来创建对象,比如用来实现C++中的单例模式


       当一个类作为基类使用时一般将该类的析构函数设为virtual类型这是因为当我们使用基类指针来指向其派生类的时候,在delete该对象时如果没有virtual类型则会只调用基类的析构函数不会调用派生类析构函数,但我们的派生类析构函数中有清理工作时必将导致内存泄漏,所以把基类的析构函数设为virtual时在删除该对象时将会先调用派生类的析构函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值