现在的位置: 首页 > 综合 > 正文

防止C++的类被继承

2014年10月07日 ⁄ 综合 ⁄ 共 345字 ⁄ 字号 评论关闭

核心解决方法:

  • 让目标类T,虚继承基类B。(虚继承迫使虚基类的任何层次的子孙都要显式地初始化虚基类。)
  • B的构造函数私有,
  • T是B的友元类。

实现方法:

1.   class   T;  
   
  class   B{  
  friend   class   T;  
  private:   
  B()   {}   
  B(const   B&)   {}  
  };  
   
  class   T:   public   virtual   B  {   
  public:   
  T();   
  T(char*);   
  };   
   

2. 使用模板:

   template   <class   T>  
  class   B{  
  friend   class   T;  

private:
  B()   {}  
  };   
    class T: public virtual B<T>
{
}

抱歉!评论已关闭.