首页 > 编程语言 > 详细

C++实现不能继承的类

时间:2015-03-25 22:59:39      阅读:213      评论:0      收藏:0      [点我收藏+]

实现一个不能继承的类,这在Java等语言中是很好实现的,被final关键字修饰的类不能被继承。

C++中没有类似的关键字,须自己实现。一般有如下两种方法:

1、设置构造方法与析构方法为私有

class FinalClass
{
public:
       static FinalClass * GetInstance()
	{
		return new FinalClass();
	}
	static void DestoryInstance(FinalClass *pClass)
	{
		delete pClass;
	}
private:
	FinalClass()
	{

	}
	virtual ~FinalClass()
	{

	}
};

 由于定义构造方法与析构方法为私有,所以必须定义static方法来创建和释放类的实例。

该方法的缺点:创建类的实例不方便,而且之间在堆上创建实例,而得不到栈上的实例。

2、使用虚拟继承实现

template <typename T> class MakeFinal
{
public:
	friend T;
private:
	MakeFinal()
	{
	}
	virtual ~MakeFinal()
	{
	}
};

class FinalClass2 : virtual public MakeFinal<FinalClass2>
{
public:

	FinalClass2()
	{
	}
	virtual ~FinalClass2()
	{
	}
};

这样实现的话,FinalClass2就不能被继承,如果继承该类就会导致编译不过。而且可以像使用普通类一样来使用该类,可以在栈与堆上创建实例。

C++实现不能继承的类

原文:http://www.cnblogs.com/cmranger/p/4367015.html

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