//Array.h
#include<iostream>
using namespace std;
class Arrayint
{
public:
Arrayint(int n,int value=0);
~Arrayint();
int& operator[](int i);
void print();
private:
int *p;
int size;
};
//Array.cpp
#include"Arrayint.h"
#include<iostream>
#include<cstdlib>
#include<cassert>
using namespace std;
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;
}
void Arrayint::print()
{
for (int i=0;i<size;i++)
cout<<p[i]<<" ";
cout<<endl;
}
int& Arrayint::operator[](int i)
{
assert(i>=0&&i<=size);
return p[i];
}
//main.cpp
#include <iostream>
#include"Arrayint.h"
using namespace std;
int main()
{
Arrayint a(2);
a.print();
Arrayint b(3,6);
b.print();
b[0]=2;
cout<<b[0]<<endl;
b.print();
return 0;
}

//Car.h
#include<iostream>
#include<cstring>
using namespace std;
class Car
{
public:
Car(string maker="libing",string model="072921",int year=2018,int odometer=0);
friend ostream & operator<<(ostream& out,const Car &c);
void updateOdometer(int newodometer);
private:
string maker,model;
int year,odometer;
};
//Car.cpp
#include"Car.h"
#include<iostream>
using namespace std;
Car::Car(string maker,string model,int year,int odometer):maker(maker),model(model),year(year),odometer(odometer){}
void Car::updateOdometer(int newodometer)
{
if(newodometer<odometer)
cout<<"Warning!!!wrong!"<<endl;
else
odometer=newodometer;
}
//Battery.h
#include<iostream>
#include<cstring>
using namespace std;
class Battery
{
public:
Battery(string batterySize="70-kWh");
string get()
{
return batterySize;
}
private:
string batterySize;
};
//Battery.cpp
#include<iostream>
#include<cstring>
#include”Battery.h”
using namespace std;
Battery::Battery(string batterySize="70-kWh"):batterySize(batterySize){}
//ElectricCar.h
#include"Car.h"
#include"Battery.h"
#include<iostream>
#include<cstring>
using namespace std;
class ElectricCar: public Car
{
public:
ElectricCar(string maker="libing",string model="072921",int year=2018);
friend ostream & operator<<(ostream &out,const ElectricCar &c);
private:
string maker,model,batterysize;
int year;
Battery battery;
};
//ElectricCar.cpp
#include<cstring>
#include"ElectricCar.h"
ElectricCar::ElectricCar(string maker="libing",string model="072921",int year=2018):maker(maker),model(model),year(year)
{
batterysize=battery.get();
}
//main.cpp
#include<iostream>
#include<cstring.h>
#include"Car.h"
#include"Battery.h"
#include"ElectricCar.h"
using namespace std;
ostream& operator<<(ostream& out,const Car &c)
{
out<<c.maker<<" "<<c.model<<" "<<c.year<<" "<<c.odometer<<endl;
return out;
}
ostream& operator<<(ostream& out,const ElectricCar &ec)
{
out<<c.maker<<" "<<ec.model<<" "<<ec.year<<" "<<ec.battery<<endl;
return out;
}
int main ()
{
Car oldcar("Audi","a4",2016);
cout<<"--------oldcar‘s info--------"<<endl;
oldcar.updateOdometer(25000);
cout<<oldcar<<endl;
ElectricCar newcar("telsa","model s",2016);
newcar.updateOdometer(2500);
cout<<"--------newcar‘s info--------"<<endl;
cout<<newcar<<endl;
return 0;
}

原文:https://www.cnblogs.com/libing-072921/p/10901396.html