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