Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: All
May 6, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date