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: Intermediate
May 5, 1998

One more thing to remember when defining copy constructor and operator=

Assigning an object to itself is disastrous, so whenever you have to define a copy constructor and assignment operator, make sure your code is guarded from such a mistake:
 
class Date {
	int day, month, year;
	//...
	Date & operator= (const Date & other){ *this=other; //Dangerous 
								return *this;}
	//...
}
void f () {
	Date d;
	Date *pdate = &d;

	//...many lines of code 

	*pdate=d; //oops, object assigned to itself; disastrous
}//f()
A safe version should look like this:
 
Date & Date::operator= (const Date & other) 
{ 
	if (&other != this) //guarded from self assignment
	{
		*this = other;
		//...
	}

	return *this; 
}
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap