// B2_2.cpp #include using namespace std; class A { int x; public: int& value() { return x; } }; class B { double y; public: double& value() { return y; } }; class C : public A, public B { public: A cloneA() { return *(static_cast(this)); } B cloneB() { return *(static_cast(this)); } void showData() { cout << "\n A part is: " << A::value(); cout << "\n B part is: " << B::value(); } void setData(int x, double y) { A::value() = x; B::value() = y; } }; void main() { C c; c.setData(-3.5,0.3333); cout << "\n C's data is:"; c.showData(); A a = c.cloneA(); cout << "\n A clone's value is " << a.value(); B b = c.cloneB(); cout << "\n B clone's value is " << b.value(); cout << "\n\n"; }