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.
Nice one... You can also get this concept in this thread http://www.go4expert.com/showthread.php?t=8278