#include #include using namespace std; class Ship{ private: string name; int year; public: } // Constructors Ship(){ name = "Unknown"; year = 0; } Ship(string n, int y){ name = n; year = y; // Accessors string getName() { return name; } int getYear() { return year; } // Mutators void setName(string n) { name = n; } void setYear(int y) { year = y; } // Virtual print function virtual void print() { cout << "Name: " << name << ", Year: " << year << endl; } }; class CruiseShip : public Ship { private: int maxPassengers; public: // Constructors CruiseShip(){ maxPassengers = 0; } CruiseShip(string n, int y, int max) : Ship(n, y){ maxPassengers = max; } // Accessors int getMaxPassengers() { return maxPassengers; } // Mutators void setMaxPassengers(int max) { maxPassengers = max; } // Overriding print function void print() { cout << "Name: " << getName() << ", Max Passengers: " << maxPassengers << endl; } }; class CargoShip : public Ship { private: int cargoCapacity; public: // Constructors CargoShip(){ cargoCapacity = 0; } CargoShip(string n, int y, int cargo) : Ship(n, y){ cargoCapacity = cargo; } // Accessors int getCargoCapacity() { return cargoCapacity; } // Mutators void setCargoCapacity(int cargo) { cargoCapacity = cargo; } // Overriding print function void print() { cout << "Name: " << getName() << ", Cargo Capacity: " << cargoCapacity << endl; } }; int main(){ Ship* fleet[3]; fleet[0] = new Ship("Titanic", 1912); fleet[1] = new CruiseShip("Freedom", 2010, 4000); fleet[2] = new CargoShip("Ever Given", 2018, 200000); for(int i = 0; i < 3; i++){ fleet[i]->print(); } return 0; }