Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

#include #include using namespace std; class Vehicle { public: virtual int numOf

ID: 3660361 • Letter: #

Question

#include #include using namespace std; class Vehicle { public: virtual int numOfTires() = 0; // virtual function }; class Motorcycle : public Vehicle { public: int numOfTires(){return 2; }; }; class Car : public Vehicle { public: int numOfTires() {return 4; }; }; class ThreeWheeler : public Vehicle { public: int numOfTires() {return 3; }; }; int main() { cout << "Experiment 1: " << endl; // cannot create an object of class Vehicle because it has a virtual function Motorcycle v1; Car v2; ThreeWheeler v3; cout << "My motorcycle has " << v1.numOfTires() << " tires" << endl; cout << "My car has " << v2.numOfTires() << " tires" << endl; cout << "My three wheeler has " << v3.numOfTires() << " tires" << endl; cout << endl << "Last Experiment: " << endl; Vehicle * ptr[3]; // create an array of pointers and store addresses of my vehicles ptr[0] = &v1; ptr[1] = &v2; ptr[2] = &v3; for (int i = 0; i <3 ; i++) { cout << "My vehicle " << i+1 << " has " << ptr[i]->numOfTires() << " tires" << endl; } system("pause"); return 0; } In the above program, why are the functions dynamically bound?

Explanation / Answer

//base class Vehicle has pure virtual fxn numOfTires //there are 3 derived classes that override the function #include #include using namespace std; class Vehicle { public: virtual int numOfTires() = 0;// pure virtual function (denoted by =0) }; class Motorcycle : public Vehicle { public: int numOfTires(){return 2; };//overrides base class and returns 2 }; class Car : public Vehicle { public: int numOfTires() {return 4; };//overrides base class and returns 4 }; class ThreeWheeler : public Vehicle { public: int numOfTires() {return 3; };////overrides base class and returns 3 }; int main() { cout