实验四 继承

#ifndef BATTER_HPP
#define BATTER_HPP

#include <iostream>

using namespace std;

class Batter
{
public:
    Batter(int capacity = 70) : capacity(capacity) {}
    int get_capacity();
    int capacity;
};

int Batter::get_capacity()
{
    return capacity;
}

#endif
#ifndef CAR_HPP
#define CAR_HPP

#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

class Car
{
public:
    Car(){};
    Car(string maker, string model, int year,int odometers = 0);
    void info();
    void update_odometers(int meters);

protected:
    string maker;
    string model;
    int year;
    int odometers;
};

Car::Car(string maker, string model, int year,int odometers)
{
    this->maker = maker;
    this->model = model;
    this->year = year;
    this->odometers = odometers;

}

void Car::info()
{

    cout <<left<< setw(15) << "makers: " << maker << endl;
    cout << setw(15) << "model: " << model << endl;
    cout << setw(15) << "year: " << year << endl;
    cout << setw(15) << "odometers: " << odometers << endl;
}

void Car::update_odometers(int meters)
{
        if (meters < 0)
        {
            cout << "输入的数值有误";
        
        }
        else
        {
            odometers += meters;

        }
    
}

#endif
#ifndef ELECTRICCAR_HPP
#define ELECTRICCAR_HPP

#include "Car.hpp"
#include "batter.hpp"

class ElectricCar : public Car
{
public:
    ElectricCar(string maker,string model,int year,int odometers = 0);
    void info();

protected:
    Batter battery;

};

ElectricCar::ElectricCar(string maker,string model,int year,int odometers)
{
    this->maker=maker;
    this->model=model;
    this->year=year;
    this->odometers = odometers;
}



void ElectricCar::info()
{
    
    cout << setw(15) << "makers: " << maker <<endl;
    cout << setw(15) << "model: " << model <<endl;
    cout << setw(15) << "year: " << year <<endl;
    cout << setw(15) << "odometers: " << odometers <<endl;
    cout << setw(15) << "capacity: " << battery.get_capacity() <<"-kWh"<<endl;
    
}

#endif
#include <iostream>
#include "ElectricCar.hpp"

int main()
{
    using namespace std;

    // test class of Car
    Car oldcar("Audi", "a4", 2016);
    cout << "--------oldcar's info--------" << endl;
    oldcar.update_odometers(25000);
    oldcar.info();

    cout << endl;

    // test class of ElectricCar
    ElectricCar newcar("Tesla", "model s", 2016);
    newcar.update_odometers(2500);
    cout << "\n--------newcar's info--------\n";
    newcar.info();
}

 

#ifndef PETS_HPP
#define PETS_HPP

#include<iostream>
#include<string>

using namespace std;

class MachinePets
{

public:
    MachinePets(){};
    MachinePets(const string s);
    virtual string talk();
    string get_nickname()
    {
        return nickname;
    }
    string nickname;

};

MachinePets::MachinePets(const string s)
{
    nickname = s;
}

string MachinePets::talk()
{
    return "Ao~";
}

class PetCats : public MachinePets
{
public:
    PetCats(){}
    PetCats(string const s);
    string talk();
};

PetCats::PetCats(string const s)
{
    nickname = s;
}

string PetCats::talk()
{  
    return "miao wu~";
}

class PetDogs:public MachinePets
{
public:
    PetDogs(){}
    PetDogs(string const s);
    string talk();
};

PetDogs::PetDogs(string const s)
{
    nickname = s;
}

string PetDogs::talk()
{  
    return "wang wang~";
}

#endif
#include <iostream>
#include "pets.hpp"

void play(MachinePets *ptr)
{
    std::cout << ptr->get_nickname() << " says " << ptr->talk() << std::endl;
}

int main()
{
    PetCats cat("miku");
    PetDogs dog("da huang");

    play(&cat);
    play(&dog);
}

 

posted @ 2021-11-29 16:29  HUYEZ  阅读(17)  评论(2编辑  收藏  举报