关闭

如何防止类被继承

标签: 继承class
121人阅读 评论(0) 收藏 举报
分类:

方法有一下两种:
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,... 派生类不可以定义对象。。。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31021次
    • 积分:1205
    • 等级:
    • 排名:千里之外
    • 原创:87篇
    • 转载:29篇
    • 译文:0篇
    • 评论:1条
    最新评论