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、 虚拟继承是怎么一回事?为什么在这里要使用虚拟继承呢?
为什么呢,我也不知道,网上也没有答案,哪位大虾能解释一下,这些friend都是干什么用的?
virtual继承在这里又是起什么作用呢?
不解!!!
C++防止继承技巧
本文介绍了两种使用C++实现禁止其他类继承的方法:一是通过私有构造函数和友元类结合;二是利用模板和虚拟继承。这两种方法有效地阻止了其他类的继承行为,并探讨了私有构造函数、友元声明及虚拟继承的具体应用。
745

被折叠的 条评论
为什么被折叠?



