我自己搭建了博客,以后可能不太在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();
}