《core java》上有一个小题:在java中阻止一个类被继承很简单,用final关键字就可以了,在c++中没有final之类的东西,c++也不支持阻止继承,但是c++中是可以定义出阻止继承的类的,不过得用一些小技巧(提示:用虚基类),小弟想了好久没想出来怎么弄,大家都讨论讨论。

解决方案 »

  1.   

    #include   <iostream> 
    using   namespace   std; template   <typename   T> 
    class   CFinalClassMixin   

      friend   T;   
    private:   
      CFinalClassMixin(){}   
      ~CFinalClassMixin(){}   
    }; class   CXXX   
    {   
    public:   
      CXXX(){cout < < "I   am   CXXX " < <endl;}   
      ~CXXX(){}   
    }; class   CParent:virtual   public   CFinalClassMixin <CParent> ,   public   CXXX   
    {   
    public:   
      CParent(){}   
      ~CParent(){}   
    }; class   CChild:public   CParent{};   int   main(int   argc,   char*   argv[])   
    {   
      CParent   a;   //   可以构造   
      //CChild   b;   //不能构造   
      return   0;