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?
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:
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?)