Testing the Copy Constructor and the Assignment Operator

You have written a test program for your class X, and everythingworked fine. How did you test the copy constructor and the assignmentoperator?

   class X    {    public:      X (const X&);      const X& operator= (const X&);    };

Okay, you called both methods, and neither hung up. But did you testthe 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 ofa2, but afterwards, there should be no further connection betweenthese two objects: No operation on a1 should affect a2 and vice versa.Except for very seldom, specific cases, deviating from this rule makesmaintenance a nightmare. You should conform to this rule, and youshould test it. (If you think that code review by eye suffices, thenrecall that constructors and the assignment operator are neverinherited. Did you take all possible subtleties like this intoaccount in your code review?)

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: