防止C++的类被继承

来源:互联网 发布:淘宝店铺宝贝批量删除 编辑:程序博客网 时间:2024/05/18 12:41

核心解决方法:

  • 让目标类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>
{
}
0 0
原创粉丝点击