How to prevent your class getting inherited

jayaraj_ev's Avatar author of How to prevent your class getting inherited
This is an article on How to prevent your class getting inherited in C++.
Rated 5.00 By 1 users
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.
0
asadullah.ansari's Avatar, Join Date: Jan 2008
TechCake
Nice one...
You can also get this concept in this thread
http://www.go4expert.com/showthread.php?t=8278
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Nominate this article for Article of the month for February 2009
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Vote for this article for Article of the month February 2009