// B10.cpp - implement a derived class assignment operator #include using namespace std; class A { public: int& value() { return v; } private: int v; }; class B { public: A& value() { return a; } void say() { cout << "\n base value is " << a.value(); } private: A a; }; class D : public B { public: //// start of required answer /////////// D& operator=(const D &d) { if(this == &d) return *this; B::operator=(d); a = d.a; return *this; } //// end of required answer ///////////// A& value() { return a; } A& baseValue() { return B::value(); } void say() { cout << "\n derived value is " << a.value(); B::say(); } private: A a; }; void main() { D d1; d1.value().value() = 1; d1.baseValue().value() = 2; d1.say(); D d2; d2.value().value() = 3; d2.baseValue().value() = 4; d2.say(); d2 = d1; d2.say(); cout << "\n\n"; }