Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: All
Mar 18, 1999



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

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 {
  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.



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