首页 > 其他 > 详细

实验四

时间:2019-05-21 22:33:49      阅读:138      评论:0      收藏:0      [点我收藏+]

1.车辆信息.

battery.h:

 

#ifndef BATTERY_H

#define BATTERY_H

class Battery
{
    
    public: 
        friend class ElectricCar;
        Battery (string a1="70km/h")
        {
            a=a1;
        }
        Battery(Battery &p);
    private:
        string a;
};

 

#endif
car.h:

 

#ifndef CAR_H

#define CAR_H

#include <string>

#include <iostream>

using namespace std;

class Car{
    public:
        Car (string maker1,string model1,int year1){
            maker=maker1;
            model=model1;
            year=year1;
            odometer=0;
        };
        friend ostream &operator <<(ostream &out, Car &c);
        void updateOdometer(int odometer1){
            if(odometer>odometer1)
            {
                cout<<"输入错误\n"; 
            }
            else
            {
            odometer=odometer1;
            }
        }; 
        friend class ElectricCar;
        
    protected:
        string maker;
        string model;
        int year;
        int odometer;
};

 

#endif
electricCar.h:

#ifndef  ELECTRICCAR_H

#define ELECTRICCAR_H

#include "car.h"

#include "battery.h"

class ElectricCar : public Car{
    private:
        Battery battery;
    public:
        ElectricCar(string maker2,string model2,int year2):Car(maker2,model2,year2)
        {};
        friend ostream &operator <<(ostream &out, ElectricCar &d);
        string gatbattery(){
            return battery.a;
        }

};

#endif
car.cpp:

#include "car.h"

ostream& operator<<(ostream &out, Car &c){
    out<<"maker:"<<c.maker<<"\n"<<"model:"<<c.model<<"\n"<<"year:"<<c.year<<"\n"<<"odometer:"<<c.odometer;
    return out;
};
electricCar.h:

#include "electricCar.h"

ostream& operator<<(ostream& out, const ElectricCar& ec) {

    Car tmp = ec;

    out << tmp << endl;

    out << "batterySize: " << (ec.battery).getSize()<<"-kWh";

    return out;

}
main.cpp:

#include <iostream>

using namespace std;

 

#include "car.h"

#include "electricCar.h"

 

int main() {
    // 测试Car类 
    Car oldcar("Audi","a4",2016);
    cout << "--------oldcar‘s info--------" << endl;
    oldcar.updateOdometer(25000);
    cout << oldcar << endl;

    // 测试ElectricCar类 
    ElectricCar newcar("Tesla","model s",2016);
    newcar.updateOdometer(2500);
    cout << "\n--------newcar‘s info--------\n"; 
    cout << newcar << endl;

    system("pause");
    
    return 0;
}

运行结果

 

技术分享图片

 

2.重载运算符【】

arrayInt.h:

#ifndef ARRAY_INT_H

#define ARRAY_INT_H

 

class ArrayInt{
    public:
        ArrayInt(int n, int value=0);
        ~ArrayInt();
        // 补足:将运算符[]重载为成员函数的声明
        int  &operator[](int t);
        void print(); 
    private:
        int *p;
        int size;
};
 

#endif
arrayInt.cpp:

#include "arrayInt.h"

#include <iostream>

#include <cstdlib>

using std::cout;

using std::endl;

 

ArrayInt::ArrayInt(int n, int value): size(n) {
    p = new int[size];
    
    if (p ==nullptr) {
        cout << "fail to mallocate memory" << endl;
        exit(0); 
    } 
    
    for(int i=0; i<size; i++)
        p[i] = value;
}

ArrayInt::~ArrayInt() {
    delete[] p;
}
int &ArrayInt::operator[](int t)
{
    return p[t];
}
void ArrayInt::print() {
    for(int i=0; i<size; i++)
        cout << p[i] << " ";
    cout << endl;
}
 
main.cpp:
#include <iostream>
using namespace std;
#include "arrayInt.h"
int main() {
    // 定义动态整型数组对象a,包含2个元素,初始值为0
    ArrayInt a(2);
    a.print();
    
    // 定义动态整型数组对象b,包含3个元素,初始值为6
    ArrayInt b(3, 6);
    b.print();

    // 通过对象名和下标方式访问并修改对象元素
    b[0] = 2;
    cout << b[0] << endl;
    b.print();

    system("pause");

    return 0;
}

运行结果技术分享图片

在实验之前已经开始准备了,完成时间还是长,慢慢来吧

实验四

原文:https://www.cnblogs.com/q1831726125/p/10902742.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!