In general, disabling inheritance is a dubious idea. Yet under some circumstances it may be useful. To do this, declare the class in question (called A in our example) as a friend of another class (called Lock in our example). Locks constructor must be private:
class A;class Lock { friend class A;private: Lock() {} };
Next, virtually derive the class in question from Lock:
class A : virtual public Lock { // ...public: A(); A(int);//.. additional ctors, dtors etc.};
Consequently, any attempt to derive from A will fail:
A a; // OKclass Derived : public A { };Derived d;// error: Deriveds ctor cant access Locks ctor