面试常问-----------如何实现一个不能被继承的类

一个类不能被继承,就是说它的子类不能构造出父类对象(由于继承就是要达到复用的效果),那么这个子类就无法实例化整个子类,就可以理解成无法继承父类。
方案1:
首先由于我们知道子类继承父类时,访问属性就会改变,private修饰的成员被继承后在子类是不可见的,而子类的构造函数是由子类父类合成而来的,如此就没有办法创建对象,所以我们可以将父类的构造函数声明成私有的,这样一来,这个类的构造函数在子类中是不可见的,那么这个类就不能被继承了。
但是由于将这个类构造函数定义成了私有,那在类外他自己都没有办法构造对象,所以
方案2:
改进方案就是定义一个static的函数,函数的作用就是作为一个接口,返回一个创建的对象可以被类外看到,帮助构造类的实例,还有一种方案就是将这个函数定义成友元函数,友元关系也不可以被继承。
方案3:由于设置static或者友元,类就不能像普通的类一样;所以我们就要用到虚继承了。
让父类虚继承一个G类,那么根据虚继承的特性,虚基类的构造函数由最终子类负责构造,所以B类想要继承A类,就要能构造出G类,这是没办法实现的,所以就实现了一个不能被继承的类。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值