// B2.5.cpp : Defines the entry point for the console application. // // Given the classes: // // class A { // public: // virtual void fun1(int); // virtual int fun2(); // void fun3(); // }; // class B : public A { // public: // void fun1(int); // virtual void fun4(); // } // // show how you would call each of these five functions using // a pointer of type A*. #include "stdafx.h" #include using namespace std; // Given: class A { public: A() :ival(0) {} virtual void fun1(int i) { cout << "\n in A::fun1(" << i << ")"; ival = i; } virtual int fun2() { cout << "\n in A::fun2()"; return ival;} void fun3() { cout << "\n in A::fun3()"; } int& value() { return ival; } private: int ival; }; class B : public A { public: void fun1(int i) { cout << "\n in B::fun1(" << i << ")"; value()=i; } virtual void fun4() { cout << "\n in B::fun4()"; } }; // show how you invoke fun4 using a pointer of type A*. int _tmain(int argc, _TCHAR* argv[]) { std::cout << "\n Exam B2 - Question #5 " << "\n =======================\n"; A a; A *pA = &a; pA->fun1(5); pA->fun2(); pA->fun3(); B b; pA = &b; pA->fun1(5); pA->fun2(); pA->fun3(); //// answer ////////////////////// dynamic_cast(pA)->fun4(); ////////////////////////////////// cout << "\n\n"; return 0; }