+ 1

IN CPP Using class initializer list?

In CPP should we be using class initializer list when assinging class properties to a value or a constructor ...and is there any drawback of not using it?

2nd Mar 2018, 4:56 PM
Melodemon Alpheus
Melodemon Alpheus - avatar
2 Answers
+ 7
Always use initializer ! (An example at the end.) 1: readable and tidy code. Put all data members inside initializer, even the members you think aren't needed for your constructor. default data. You'll always know where to find information of the composition,state,defaults of your class. 2: efficiency. member objects constructors are initialized before the body of your constructor, no reason to assign a value later.. 3: Make sure an instance of your class it's initialized. If a member is not initialized it can lead to undefined behaviour! For built in types(int for example) it's hard to know if they are initialized themselves. For objects... well if they are designed whit these rules it's fine. 1+3: if you put all your data members on initializer you'll clearly know which data is initialized and which not. 4: const and references MUST be initialized. class myClass { public: myClass(string _name): // you pass only this level (1), // if these wasn't initialized they HP (87.9), // can have strange value, maybe not // wanna risk? // it's always good to manually // initialize built-in types name ( _name) // and here.. // name is a string object.. it has a constructor // so it is created and initialized before the body // of our class constructor.. this way you pass // directly _name parameter to his constructor. // why assign _name later inside the body?? { // body of constructor } .... ..//a lot of code... //and finally data members private: int level; // this way members are declared float HP; // here , and defined in initializer string name; };
3rd Mar 2018, 3:39 AM
AZTECCO - avatar
+ 5
IIRC constructor intializer can be used to initialize a const member while that's not the case with constructor code. https://www.sololearn.com/learn/CPlusPlus/1896/ Cmiiw
2nd Mar 2018, 5:38 PM