首页 > 编程语言 > 详细

用C++设计一个不能被继承的类

时间:2015-06-25 19:16:30      阅读:238      评论:0      收藏:0      [点我收藏+]

解法一:把构造函数设为私有

  将构造函数定义为私有,然后通过定义公有的静态函数来创建和释放类的实例。

 1 class SealedClass 1
 2 {
 3   public:
 4     static SealedClass1* GetInstance()
 5     {
 6        return new SealedClass1();
 7     }
 8     static void DeleteInstance( SealedClass1* pInstance)
 9     {
10       delete pInstance;
11     }
12   private:
13     SealedClass1();
14     ~SealedClass1(){}
15 }

缺点:只能得到位于堆上的实例,得不到位于栈上的实例。

解法二:利用虚拟继承

class MakeSealed
{
  friend SealedClass2;
private:
  MakeSealed();
  ~MakeSealed();
};

class SealedClass2:virtual public MakeSealed
{
  public:
  SealedClass2(){}
  ~SealedClass2(){}
};

  SealedClass2是不能被继承的类。当一个类试图继承它时,在调用该类的构造函数时会直接跳过SealedClass2而直接调用MakeSealed的构造函数,因此会出现编译错误。

 

用C++设计一个不能被继承的类

原文:http://www.cnblogs.com/happygirl-zjj/p/4600427.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!