如何防止类被继承

方法有一下两种:
1、将类后面加一个final关键字,最简单;
2、利用私有构造函数,然后提供public的方法创建对象或者设定友元。
重点说说方法2:
(1)将构造函数设为私有,提供public方法进行对象的创建,利用的是单例模式。
(2) 将构造函数设为私有,通过设定友元来进行创建对象,其友元类为子类,所以在创建对象时,需要调用父类的构造函数,因为是友元,所以可以创建对象。但B就不行,因为友元A只针对该一个类Usable_lock有效,对其他类或派生类(B)均无效,代码如下:

class A;
class Usable_lock{
friend class A;
private:
   Usable_lock(){};
   Usable_lock(const Usable_lock){};
};
 //Usable_lock为一个辅助实现的类
class A: public virtual Usable_lock{
public:
  A();
};
class B: public A
{
}; 
A a;  //可以正常定义对象
B b;  //error,... 派生类不可以定义对象。。。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang664626482/article/details/52354693
文章标签: 继承 class
个人分类: C++基础
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

如何防止类被继承

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭