//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