1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

How to prevent your class getting inherited

Discussion in 'C++' started by jayaraj_ev, Feb 6, 2009.

  1. jayaraj_ev

    jayaraj_ev New Member

    When you plan to design a Class for which you feel that it should not be inherited further by any other class then...Here is a tip : Use of Virtual Private Inheritance

    Code:
    #include <iostream>
    
    using namespace std;
    
    class Base
    {
      protected:
        Base()
        {
          cout<<"Base::Base"<<endl;
        }
    };
    
    class Dervied : virtual private Base
    {
      public:
         Dervied()
         {
           cout<<"Dervied::Dervied"<<endl;
         }
    };
    
    class Client : public Dervied
    {
      public:
         Client()
         {
           cout<<"Client::Client"<<endl;
         }
    };
    
    int main(void)
    {
      Client c;
      return 0;
    }
    
    Here Derived class cannot be inherited by any other class.But when our client class tries to inherit we get a Error :
    In constructor `Client::Client()':
    error: `Base::Base()' is protected


    The reason is simple when ever you inherit a class virtually then you should call the constructor of Base explicity on good design.
     
  2. asadullah.ansari

    asadullah.ansari TechCake

  3. shabbir

    shabbir Administrator Staff Member

  4. shabbir

    shabbir Administrator Staff Member

Share This Page