// Alexey.cpp #include class B { public: virtual void speak(char *msg) { std::cout << "\n B object speaking in " << msg << "\n\n"; } }; class D : public B { public: virtual void speak(char *msg) { std::cout << "\n D object speaking in " << msg << "\n\n"; } }; void fun1(B b) { b.speak("fun1"); } void fun2(B &b) { b.speak("fun2"); } void main() { D d; fun1(d); fun2(d); }