Initializer list in C++ looks like in the example below (see constructor od D class):
class B { public: B() { } }; class D : public B { public: int x; int y; D(int _x , int _y) : x(_x) , y(_y +1) { } };
Now, what if class B
had a protected member (z), which you had to initialize in the derived class? It can’t be done in the initializer list. It can be done as below though.
class B { public: B() { } protected: int z; }; class D : public B { public: int x; int y; D(int _x , int _y, int _z) : x(_x) , y(_y +1) { z = _z; } };
Looks simple but if you are switching to C++ after several years it no longer must be so
Update [2011-12-10]
It’s worth remembering that one should always initialize member variables in order they are defined in the class to avoid illegal dependencies that are hard to find.