Virtual function exercises Review

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class Base {
 6 public:
 7     virtual void VirtualFunc() { cout << "Base virtual" << endl; }
 8     void NonVirtualFunc() { cout << "Base non-virtual" << endl; }
 9 };
10 
11 class Derived : public Base {
12 public:
13     void VirtualFunc() { cout << "Derived virtual" << endl; }
14     void NonVirtualFunc() { cout << "Derived non-virtual" << endl; }
15 };
16 
17 int main(int argc, char *argv[])
18 {
19     Base base;
20     Derived derived;
21     Base *dPtr = &derived;
22     Base *bPtr = &base;
23     Derived *ptr = static_cast<Derived *>(&base);
24     ptr->VirtualFunc();
25     ptr->NonVirtualFunc();
26 
27 
28     dPtr->VirtualFunc();
29     dPtr->NonVirtualFunc();
30     bPtr->VirtualFunc();
31     bPtr->NonVirtualFunc();
32     return 0;
33 }

 

Output:

virtual Base

Derived non-virtual

Derived virtual

Base non-virtual

virtual Base

Base non-virtual

To sum it up: virtual functions is who is who , non-virtual functions convert who is who .

Guess you like

Origin www.cnblogs.com/wisdomroc/p/11896176.html