如何防止类被继承

原创 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++中如何阻止类被继承

这个话题是源自于一个面试题,我在网上查了一下有不少这方面的解说!我自己整理了一下,选择了一个自认为是最优方案! 我们从最简单的开始: 首先,大家都知道要阻止类被实例化,可以通过使用private ...
  • yu12345678900
  • yu12345678900
  • 2014年11月22日 17:33
  • 797

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

在C++学习中,尤其在涉及类这一内容时,我们往往会遇到这样一个问题:如何设计一个类,要求该类不能被继承?   最简单的方法就是将该类的构造函数声明为私有方法,但是这又带来另一个弊端:那就是该类本身不...
  • mikon_lee
  • mikon_lee
  • 2013年06月08日 13:44
  • 362

C++防止类被继承

学过C++,看过一些C++书籍的人一般都知道怎么防止一个类被构造初始化,被赋值等等,它们的思想都一样,就是把相应的操作放到private区域中。现在,给大家介绍一种防止一个类被继承的方法,很巧妙~~ ...
  • kuyucman
  • kuyucman
  • 2013年01月28日 11:35
  • 376

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

在C++学习中,尤其在涉及类这一内容时,我们往往会遇到这样一个问题:如何设计一个类,要求该类不能被继承? 最简单的方法就是将该类的构造函数声明为私有方法,但是这又带来另一个弊端:那就是该类本身不能生...
  • zzandyc
  • zzandyc
  • 2017年05月02日 22:43
  • 68

模板类的继承问题

首先大家来看这段代码: class A { public: void Show() { cout
  • ooooo12345re
  • ooooo12345re
  • 2016年04月22日 12:07
  • 651

C++模板类的使用和继承

定义一个类模板,注意两点: 1,类的定义前面使用关键词:template 2,函数的实现部分,在每个函数名的上一行也要加关键词template , 并且在函数名后面添加,例如 template...
  • taigw
  • taigw
  • 2014年01月14日 10:59
  • 2817

Ruby之旅(四) 类的继承

Ruby之旅(四) 类的继承 直接上代码 Rectangle.rb class Rectangle   attr_accessor :width   attr_accessor ...
  • sunyllove
  • sunyllove
  • 2016年09月07日 14:37
  • 527

C++中防止一个类被继承

一、思路在C++的继承里面我们知道,子类的构造函数会调用父类的构造函数,子类的析构函数会调用父类的析构函数,因此我们便想办法禁止子类调用父类的构造函数和析构函数即可,因此提出了如下两种方法。二、方法①...
  • ArchyLi
  • ArchyLi
  • 2017年11月18日 12:07
  • 142

JAVA面向对象 类的继承

本页面更新日期: 2016年07月30日前言 继承是面向对象的三大特征之一. 也是实现软件复用的重要手段. Java继承具有单继承的特点, 每个子类只有一个直接父类. 继承的特点 ...
  • tmdlife
  • tmdlife
  • 2016年07月26日 20:10
  • 1381

类与继承总结

一、类之间的关系 在面向对象技术中,类是数据和操作的集合,他们之间有三种主要关系:has-a,uses-a和is-a。 has-a表示类的包含关系,用于描述一个类由多个“部件类”构成。C++实现h...
  • Gao__Xiong
  • Gao__Xiong
  • 2016年03月11日 21:44
  • 449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何防止类被继承
举报原因:
原因补充:

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