>>602
継承される可能性のあるクラスはコピーコンストラクタやoperator=をprivateにするのが原則。
class Base {
public:
    Base &operator=(const Base &);
};

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

void foo(Base *p, const Base *q)
{ *p = *q; }

void bar() {
    Base b;
    Derived d;
    foo(&d, &b); // 何が起こるだろう?
}