Login | Register   
RSS Feed
Download our iPhone app
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
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.