#include <iostream> #include "Vehicle.h" #include "Car.h" #include "Bicycle.h" void display(Vehicle &v) { std::cout<<v.getProducer()<<std::endl; std::cout<<v.toString()<<std::endl;//toString in Vehicle class is called } int main(int argc, char *argv[]) { Vehicle v("Buick"); Car c("Honda", "Accord"); Bicycle b("Yongjiu", 26); std::cout<<"-----------------------"<<std::endl; display(v); display(c); display(b); std::cout<<"-----------------------"<<std::endl; return 0; }
//Vehicle.h #ifndef VEHICLE_H #define VEHICLE_H #include <iostream> #include <string> class Vehicle { private: std::string producer; public: //constructor Vehicle(std::string s); std::string getProducer() const {return producer;} void setProducer(std::string producer); virtual std::string toString(); ~Vehicle(); }; #endif
//Vehicle.cpp #include <iostream> #include <string> #include "Vehicle.h" //constructor Vehicle::Vehicle(std::string s):producer(s) { std::cout<<"Vehicle Constructor ..."<<std::endl; } void Vehicle::setProducer(std::string producer) { this->producer = producer; } std::string Vehicle::toString() { std::string temp; temp = "Vehicle Producer: "+producer; return temp; } Vehicle::~Vehicle() { std::cout<<"Vehicle Destructor ..."<<std::endl; }
//Car.h #ifndef CAR_H #define CAR_H #include <iostream> #include <string> #include "Vehicle.h" class Car : public Vehicle { private: std::string model; public: //constructor Car(std::string p, std::string m); std::string getModel() const {return model;} void setModel(std::string model); std::string toString(); ~Car(); }; #endif
//Car.cpp #include <iostream> #include <string> #include "Vehicle.h" #include "Car.h" //constructor Car::Car(std::string p, std::string m):Vehicle(p), model(m) { std::cout<<"Car Constructor ..."<<std::endl; } void Car::setModel(std::string model) { this->model = model; } std::string Car::toString() { std::string temp; temp = "Car Producer: "+getProducer()+" Model: "+model; return temp; } Car::~Car() { std::cout<<"Car Destructor ..."<<std::endl; }
//Bicycle.h #ifndef BICYCLE_H #define BICYCLE_H #include <iostream> #include <string> #include "Vehicle.h" class Bicycle : public Vehicle { private: int size; public: //constructor Bicycle(std::string p, int s); int getSize() const {return size;} void setSize(int s); std::string toString(); ~Bicycle(); }; #endif
//Bicycle.cpp #include <iostream> #include <string> #include "Vehicle.h" #include "Bicycle.h" //constructor Bicycle::Bicycle(std::string p, int s) : Vehicle(p), size(s) { std::cout<<"Bicycle Constructor ..."<<std::endl; } void Bicycle::setSize(int s) { size = s; } std::string Bicycle::toString() { std::string temp; temp = "Bicycle Producer: "+getProducer()+" Size: "+std::to_string(size); return temp; } Bicycle::~Bicycle() { std::cout<<"Bicycle Destructor ..."<<std::endl; }
//main.cpp #include <iostream> #include "Vehicle.h" #include "Car.h" #include "Bicycle.h" void display(Vehicle &v) { std::cout<<v.getProducer()<<std::endl; std::cout<<v.toString()<<std::endl; } int main(int argc, char *argv[]) { Vehicle v("Buick"); Car c("Honda", "Accord"); Bicycle b("Yongjiu", 26); std::cout<<"-----------------------"<<std::endl; display(v); display(c); display(b); std::cout<<"-----------------------"<<std::endl; return 0; }
//Use the code of static binding #include <iostream> #include "Vehicle.h" #include "Car.h" #include "Bicycle.h" void display(Vehicle &v) { std::cout<<v.toString()<<std::endl; } int main(int argc, char *argv[]) { Vehicle *c = new Car("Honda", "Accord"); display(*c); delete c; return 0; }
#ifndef VEHICLE_H #define VEHICLE_H #include <iostream> #include <string> class Vehicle { private: std::string producer; public: //constructor Vehicle(std::string s); std::string getProducer() const {return producer;} void setProducer(std::string producer); std::string toString(); virtual ~Vehicle(); }; #endif
//Vehicle.h #ifndef VEHICLE_H #define VEHICLE_H #include#include class Vehicle { private: std::string producer; public: //constructor Vehicle(std::string s); std::string getProducer() const {return producer;} void setProducer(std::string producer); virtual std::string toString(); virtual ~Vehicle(); }; #endif
//main.cpp #include <iostream> #include "Vehicle.h" #include "Car.h" #include "Bicycle.h" void display(Vehicle *v) { std::cout<<v->toString()<<std::endl; } int main(int argc, char *argv[]) { Vehicle *v[3] = {new Vehicle("Buick"), new Car("Honda", "Accord"), new Bicycle("Yongjiu", 26)}; std::cout<<"-----------------------"<<std::endl; for(int i = 0; i < 3; i++) display(v[i]); std::cout<<"-----------------------"<<std::endl; for(int i = 0; i < 3; i++) delete v[i]; return 0; }
#ifndef VEHICLE_H #define VEHICLE_H #include <iostream> #include <string> class Vehicle { private: std::string producer; public: //constructor Vehicle(std::string s); std::string getProducer() const {return producer;} void setProducer(std::string producer); virtual std::string toString() = 0; virtual ~Vehicle(); }; #endif