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
Mar 17, 1999

Before You Define a Copy Constructor and Assignment Operator...

In general, classes that possess pointers, file handles, and other resources need a user-defined constructor to avoid aliasing. For example:
 
class Person {
private:
  int age;
  char * name;
public:   // the following three member functions must be defined by the class implementer 
  Person (const char * name, int age);
  Person & operator= (const Person & other); 
  Person (const Person& other);
};
Seemingly, there's no escape from explicitly defining a copy constructor and assignment operator for class Person, or else the compiler-generated copy constructor and assignment operator will result in aliasing. However, the aliasing problem in this case results from the reliance on low-level language constructs (a bare pointer). Had class Person possessed an embedded std::string object instead of a pointer to char, the user-written copy constructor and assignment operator wouldn't be needed. When a class needs user-defined assignment operator and copy constructor, it may indicate a design flaw rather than an unavoidable necessity.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap