class ToolClass{
protected:
ToolClass(){}
~ToolClass(){}
};
class Sealed : private virtual ToolClass{
public:
Sealed(){}
~Sealed(){}
};
method2:
template < typename type>
class ToolClass{
private:
ToolClass(){};
~ToolClass(){};
friend type;
};
class sealed : virtual public ToolClass<sealed>
{
public:
sealed(){};
~sealed(){};
};
两个sealed类都是不可继承的!
通用模板:
//file name: NoInherit.h
template <class T> class NoInherit_;
template <class T,template<class T> class A >
class NoInherit_< A<T> >
{
private:
friend A<T>;
friend T;
NoInherit_(){}
};
template <class T>
class NoInherit: virtual public NoInherit_< NoInherit< T> >
{
public:
typedef T type;
private:
friend T;
NoInherit():NoInherit_< NoInherit< T> >(){}
};那么这个类模板是怎么样达到“不让其它类继承”的目的的呢?它是通过私有构造函数和虚拟继承来实现的。
下面这几个问题:
1、 有哪些方法能实现“不让其它类继承”呢?
2、 为什么要用到friend A<T>;
3、 虚拟继承是怎么一回事?为什么在这里要使用虚拟继承呢?
4 、 NoInherit_ 中 friend A<T> 好理解, friend T 怎么理解?为什么呢,我也不知道,网上也没有答案,哪位大虾能解释一下,这些friend都是干什么用的?
virtual继承在这里又是起什么作用呢?
不解!!!