Eh...looks fine to me.Code:#include <iostream> using std::cout; using std::endl; class A { public: int m_a; A& operator=(const A& a) { m_a = a.m_a; //assign return *this; } }; class B : public A //B derived from A { public: int m_b; B& operator=(const B& b) { this->A::operator=(b); //call base operator= m_b = b.m_b; //assign return *this; } }; int main() { A a1, a2; B b1, b2; a1.m_a = 2; a2 = a1; cout << a2.m_a << endl; b1.m_a = 3; b1.m_b = 4; b2 = b1; cout << b2.m_a << " " << b2.m_b << endl; return 0; }