Avoid Empty Member Initialization Lists

Following yesterday’s tip, here’s another deprecated habit that programmers should avoid. Consider the following class hierarchy:

 class base{public:  base();};class derived: public base{public: derived() : base() {/*some code*/} // superfluous};


The member initialization list of class derived doesn’t really initialize anything. In fact, it merely invokes the default constructor of the base class. However, this is superfluous. Had we omitted the member initialization list in this case (or eliminated the constructor of derived altogether), the compiler would have synthesized a default constructor for class derived. The synthesized constructor automatically invokes the base class’s constructor. As you can see, this is another violation of the

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

Overview

Recent Articles: