实验4继承

Car.hpp

#pragma once
#include<iostream>
#include<string>

using namespace std;

class Car
{
   private:
        string maker;
        string model;
        int year;
        int odometers;
   public:
           Car(string maker,string model,int year);
        void info();
        void update_odometers(int  a);

};

Battery.hpp

#pragma once
#include<iostream>

using namespace std;

class Battery
{
    private:
    int capacity;
    public:    
    Battery(int _capacity=70);
    int get_capacity();

};

ElectricCar.cpp

#include"ElectricCar.hpp"

Battery::Battery(int _capacity):capacity(_capacity){}

int Battery::get_capacity(){
    return capacity;
}
Car::Car(string _maker,string _model,int _year):maker(_maker),model(_model),year(_year),odometers(0){
}
void Car::info()
{
        
    cout<<"maker:   "<<maker<<endl;
    cout<<"model:   "<<model<<endl;
    cout<<"year:    "<<year<<endl;
    cout<<"odometer:"<<odometers<<endl;
}
void Car::update_odometers(int a)
{
        if(odometers<=a)
            {
                odometers=a;
            }
            else
            cout<<"wrong odometers\n";
}
ElectricCar::ElectricCar(string _maker,string _model,int _year,int _capacity):Car(_maker,_model,_year),battery(_capacity){
}
void ElectricCar::info()
{
    Car::info();
    cout<<"capacity:"<<battery.get_capacity()<<" kWh"<<endl;
        
}

ElectricCar.hpp

#pragma once
#include"Car.hpp"
#include"Battery.hpp"
#include<iostream>

using namespace std;

class ElectricCar:public Car
{
    private:
        Battery battery;
    public:
        ElectricCar(string maker,string model,int year,int capacity=70);
        void info();

};

task3.cpp

#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();
}

 

Ps:ElectricCar.cpp是实现文件,头文件中只声明函数,在实现文件中定义

 

TASK4

 

pets.hpp

 #include<iostream>
 #include<string>
 
 using namespace std;
 
 class MachinePets
 {
     private:
         string nickname;
         
     public:
         MachinePets(const string s)
         {
             nickname=s;
        }
        string get_nickname()
        {
            return nickname;
        }
        virtual string talk()
        {
            return " ";
        }
};
class PetCats:public MachinePets
{
    public:
    PetCats(const string s):MachinePets(s)
    {
    }
    string talk()
    {
        return "maio wu~";
    }
};
class PetDogs:public MachinePets
{
    public:
        PetDogs(const string s):MachinePets(s)    {}
        string talk()
        {
            return " wang wang~";
        }
};

task4

#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-24 22:00  Sunshine、烈焰  阅读(28)  评论(2编辑  收藏  举报