// This code demonstrates use of member initialization lists in constructors. // // When should you use member initialization? // • When you have a non-default initial value for your member variable. // • When you want to emphasize the default initial value. // • When the member variable is expensive to construct, and you // have a non-default initial value to put in it. // // When must you use member initialization? // • When the member variable is only initializable, and not assignable: // - a const variable // - a reference variable // - an object without a default constructor // - initializing a base class // // Member variables are constructed in declaration order, // not member initialization list order. #include using namespace std; class Ratio { public: Ratio() : top(0), bottom(1) { } Ratio(int a) : top(a), bottom(1) { } Ratio(int a, int b) : top(a), bottom(b) { } // Ctor delegation: // BAD: Ratio() { Ratio(0,1); } // GOOD: Ratio() : Ratio(0,1) { } // GOOD: Ratio(int a) : Ratio(a,1) { } private: int top, bottom; }; int main() { Ratio f; }