///////////////////////////////////////////////////////////////////// // MT3Q3.cpp #include #include #include class B { public: virtual ~B() {} virtual void say() { std::cout << "\n B instance"; } }; class D : public B { virtual void say() { std::cout << "\n D instance"; } }; B* f(const D& d) { return new D(d); } void main() { std::cout << "\n Creating a copy of an instance of D, then sliced to a B:"; B* pB; D d; (*(pB = f(d))).say(); delete pB; B b = *(pB = f(d)); b.say(); delete pB; std::cout << "\n\n"; } Creating a copy of an instance of D, then sliced to a B: D instance B instance