////////////////// // MT1Q3.cpp #include class B { public: B(double d=0) : _d(d) {} virtual ~B() {} double& BValue() { return _d; } virtual void say() { std::cout << "\n a B here"; } private: double _d; }; class D : public B { public: D(int i=0) : _i(i) {} D(const D& d) : B(d), _i(d._i) {} int& DValue() { return _i; } virtual void say() { std::cout << "\n a D here"; std::cout << "\n my _i is: " << _i; std::cout << "\n my base's _d is " << BValue(); } private: int _i; }; void main() { D d(3); d.say(); d.BValue() = -2.5; std::cout << "\n original D"; d.say(); std::cout << "\n copy:"; D d1 = d; d1.say(); std::cout << "\n\n"; }