Login | Register   
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 21, 1998

Testing the Copy Constructor and the Assignment Operator

You have written a test program for your class X, and everything worked fine. How did you test the copy constructor and the assignment operator?
 
  class X
    {
    public:
      X (const X&);
      const X& operator= (const X&);
    };
Okay, you called both methods, and neither hung up. But did you test the logical independence of source and target? Consider this:
 
  X a1, a2;
  a1 = a2;
The meaning of operator= should be two-fold: a1 is a logical copy of a2, but afterwards, there should be no further connection between these two objects: No operation on a1 should affect a2 and vice versa. Except for very seldom, specific cases, deviating from this rule makes maintenance a nightmare. You should conform to this rule, and you should test it. (If you think that code review by eye suffices, then recall that constructors and the assignment operator are never inherited. Did you take all possible subtleties like this into account in your code review?)
Karsten Weihe
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap