如何防止类被继承

原创 2016年08月29日 16:54:35

方法有一下两种:
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,... 派生类不可以定义对象。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++中的类如何防止被继承

C++中如何使类不能继承转自(http://blog.163.com/austin_125/blog/static/17824292200910745038396/ )   如何使类不能被继承  ...
  • lqk1985
  • lqk1985
  • 2011年03月23日 17:15
  • 709

CSS水晶按钮 防止滤镜继承

  • 2008年06月07日 20:42
  • 1KB
  • 下载

怎么防止类被继承?对于不能被继承的类,怎么初始化及销毁它的实例?

“怎么防止类被继承?对于不能被继承的类,怎么初始化及销毁它的实例?”这是ADOBE公司的一道笔试题。看了这道题目,笔者查阅了一些资料并结合自己的一些想法,写了这篇博客,有错误的地方请指出,谢谢。首先看...

C++中虚继承防止二义性

虚继承,就是在被继承的类前面加上virtual关键字,这时被继承的类称为虚基类,如下面代码中的base类。虚继承在多重继承的时可以防止二义性。     class base;     clas...

一个基于VB.net的异步Socket网络TCP通信可防止任意一端意外终止TCP连接的类,。

之前,因为要做一个TCP通信的项目,有研究一下Socket类,但是为了快速完成任务,还是在网上找了一些源码来调试测试,发现很多源码都无法触发TCP连接的任意一端 的突然意外中断连接的事件,于是本...

类的继承实验题

  • 2017年10月28日 23:34
  • 75KB
  • 下载

c++继承坐标类

  • 2016年05月21日 16:34
  • 1KB
  • 下载

Java数值计算工具类NumberUtil(防止java计算产生浮点问题)

import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.regex.Matcher; import ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何防止类被继承
举报原因:
原因补充:

(最多只允许输入30个字)