Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

Tip of the Day
Language: C++
Expertise: All
May 21, 1998



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

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



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