C++ FAQ Celebrating Twenty-One Years of the C++ FAQ!!!
(Click here for a personal note from Marshall Cline.)
Section 12:
12.1 What is "self assignment"?
12.2 Why should I worry about "self assignment"?
12.3 How do I handle self-assignment?
12.4 Should my assignment operator call my base class's assignment operator?
[12.4] I'm creating a derived class; should my assignment operator call my base class's assignment operator?

Yes (if you need to define an assignment operator in the first place).

If you define your own assignment operator, the compiler will not automatically call your base class's assignment operator for you. Unless your base class's assignment operator itself is broken, you should call it explicitly from your derived class's assignment operator (again, assuming you create one in the first place).

However if you do not create your own assignment operator, the one that the compiler creates for you will automatically call your base class's assignment operator.

Example:

class Base {
  ...
};

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

Derived& Derived::operator= (Derived const& d)
{
   make sure self-assignment is benign
  Base::operator= (d);
   do the rest of your assignment operator here...
  return *this;
}