防止C++的类被继承

核心解决方法:

  • 让目标类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   B{  
  friend   class   T;  

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

   

你可能感兴趣的:(C++技巧)