如何实现一个不能被继承的类

本文介绍如何通过两种方式创建不可被继承的类:一是将构造函数设为私有,二是利用虚继承和友元特性。前者使类无法在外实例化,后者则通过虚基类特性避免派生类实例化时调用特定构造函数。

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

如何实现一个不能被继承的类

 

我们有两种方式:

  • 第一种:类似于单例模式的处理,将类的构造函数或者析构函数写到private下,则派生类则无法继承后实例化,但是这个类也将无法在类外实例化。
  • 第二种:类似普通类相同的处理,利用虚继承和友元,虚继承的特点是派生类实例化的时候,会跳过这个继承的类,直接去调用这个类虚继承的类的构造函数。

 

我们给出代码和运行结果:

第一种代码:

 

第二种代码:

我们可以发现,由于类A虚继承于类Base,当B继承A后进行实例化的时候,调用类B的构造函数的时候,会跳过类A而直接调用类Base的构造函数,但是非常遗憾的是,类B并不是类Base的友元类,因此不能调用类Base的私有构造函数。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值