Use Mem-initializer to Initialize Embedded Objects

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.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: