Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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.

 

 

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