#include using namespace std; class A { public: virtual ~A() {cout << "A's Destructor" << endl;} virtual fun(){}; }; class B : public A { public: B(){x = 0;} virtual ~B(){cout << "B's Destructor" << endl;} virtual fun(){x++;} int x; }; class C { public: C(){x = 0;} void fun(){x++;} int x; }; void main() { const int ITERATIONS = 500000000; A* a1 = new B; //dynamic binding causes the program to run slower //than static binding. This proves it. cout << "Start Dynamic Binding Loop" << endl; for (int i = 0; i < ITERATIONS; i++) { //dynamic binding a1->fun(); } cout << "End Dynamic Binding Loop" << endl; C* c = new C; cout << "Start Static Binding Loop" << endl; for (int i = 0; i < ITERATIONS; i++) { //static binding c->fun(); } cout << "End Static Binding Loop" << endl; }