Use Protected Constructors to Block Undesirable Object Instantiation

In order to block creation of class instances, you can declare its constructor as protected.

 class CommonRoot {	protected: CommonRoot(){}//no objects of this class can be instantiated};class Derived: public CommonRoot {public: Derived() {}};Derived d; // OK, constructor of d has access to any protected member in its base classCommonRoot cr; //compilation error: attempt to access a protected member of CommonRoot

The same effect of blocking instantiation of a class can be achieved with pure virtual functions. However, these add runtime and space overhead. When pure virtual functions aren’t needed, you can use a protected constructor instead.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: