If your class contains other object(s) as members, you should initialize the embedded object(s) in a mem-initializer list instead of assigning their values inside the class constructor:
class Person { string name, address; //embedded objects int age; //preferred way to initialize embedded objects: Person(string n, string a) : name(n), address(a) {}};
Simple assignment or copy construction like the following:
class Person { string name, address; Person(string n, string a) {name = n; //very inefficient address(a); } //ditto};
is significantly less efficient since each embedded object is constructed twice: first before any user-written code in Person’s constructor is executed, and second when the assignment/copy construction is executed. Mem-initialization ensures that each embedded object’s constructor is invoked only once.