C++中定义一个不能被继承的类(友元类+类模板)

本文探讨了在C++中如何使一个类不能被继承的几种方法,包括声明构造函数为私有、利用友元类、虚继承以及使用类模板。通过这些技巧,可以有效地阻止类的继承,但同时也提出了一些由此引发的问题和解决方案。
摘要由CSDN通过智能技术生成

我自己搭建了博客,以后可能不太在CSDN上发博文了,https://www.qingdujun.com/ 。


自从C++11标准出来之后,就有了关键字final可以直接声明一个类不能被继承。那么,在此之前如果想要一个类不能被继承,可能还需要下一番功夫。


原文地址:https://www.qingdujun.com/zh-CN/cpp-class-cannot-be-inherited.html


1.声明构造函数为私有

如果将构造函数、虚构函数声明为私有的,那么这个类肯定不能被继承。

class A {
   
private:
	A() {
   }
	~A() {
   }
};

存在的问题
虽然这样的类不能被子类继承,但是本身也无法创建对象。为了解决该问题,可以使用借鉴单例模式的方式,在类中创建好对象。
由于这里讲的不是单例模式,也不追究这个例子是否符合多线程访问了。

class A {
   
public:
	static A* getInstance() {
   
		if (!s_inst) {
   
			s_inst = new A();
		}
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值