实验6-类的继承和多态

1.

#include <iostream>
using namespace std;
class base
{
    public:
        base(int a,int b):m(a),n(b){}
        void plus(){cout<<m+n<<endl;}
    private:
        int m,n;
};
class chipA:public base
{
    public:
        chipA(int a,int b):base(a,b){
            m=a;
            n=b;
        }
        void minus(){cout<<m-n<<endl;}
    private:
        int m,n;
};
class chipB:public base
{
    public:
        chipB(int a,int b):base(a,b){
            m=a;
            n=b;
        }
        void mul(){cout<<m*n<<endl;}
    private:
        int m,n;
};
class chipC:public base
{
    public:
        chipC(int a,int b):base(a,b){
            m=a;
            n=b;
        }
        void div(){cout<<m/n<<endl;}
    private:
        int m,n;
};


int main()
{
    int a,b;
    cin>>a>>b;
    chipA a1(a,b);
    a1.plus();
    a1.minus();
    cin>>a>>b;
    chipB a2(a,b);
    a2.plus();
    a2.mul();
    cin>>a>>b;
    chipC a3(a,b);
    a3.plus();
    a3.div();
    return 0;
}

2.

#include <iostream>
using namespace std;
class vehicle
{
    public:
        vehicle(int a,int b):maxspeed(a),weight(b){
            cout<<"constructing vehicle"<<endl;}
        ~vehicle(){}
        void run(){cout<<"run"<<endl;}
        void stop(){cout<<"stop"<<endl;}
        int maxspeed,weight;
        
};
class bicycle:virtual public vehicle
{
    public:
        bicycle(int a,int b, int c):vehicle(a,b),height(c){
            cout<<"constructing bicycle"<<endl;}
        ~bicycle(){}
        int height;
};
class motorcar:virtual public vehicle
{
    public:
        motorcar(int a,int b,int c):vehicle(a,b),seatnum(c){
            cout<<"constructing motorcar"<<endl;}
        ~motorcar(){}
        int seatnum;
};
class motorcycle:public bicycle,public motorcar
{
    public:
        motorcycle(int a,int b,int c,int d):
        vehicle(a,b),bicycle(a,b,c),motorcar(a,b,d){
            cout<<"constructing motorcycle"<<endl;}
        ~motorcycle(){}
};
        
int main()
{
    motorcycle a(200,10,1,5);
    cout<<"The maxspeed is:"<<a.maxspeed<<endl;
    cout<<"The weight is:"<<a.weight<<endl;
    cout<<"The height is:"<<a.height<<endl;
    cout<<"The seatnum is:"<<a.seatnum<<endl;
    a.run();
    a.stop();
    return 0;
}

.

3.

Fraction.h

class Fraction
{
    public:
        Fraction(int x,int y);
        Fraction(int x);
        Fraction();
        void show();
        Fraction operator+(Fraction &b);
        Fraction operator-(Fraction &b);
        Fraction operator*(Fraction &b);
        Fraction operator/(Fraction &b);
    protected:
        int top;
        int bottom;
};

Fraction.cpp

#include"Fraction.h"
#include<iostream>
using namespace std;
Fraction::Fraction()
{
    top=0;
    bottom=1;
}
Fraction::Fraction(int x,int y)
{
    top=x;
    bottom=y;
}
Fraction::Fraction(int x)
{
    top=x;
    bottom=1;
}
void Fraction::show()
{
    cout<<top<<"/"<<bottom<<endl;
}
Fraction Fraction::operator+(Fraction &b)
{
    Fraction temp;
    temp.top=top*b.bottom+b.top*bottom;
    temp.bottom=bottom*b.bottom;
    return temp;
}
Fraction Fraction::operator-(Fraction &b)
{
    Fraction temp;
    temp.top=top*b.bottom-b.top*bottom;
    temp.bottom=bottom*b.bottom;
    return temp;
}
Fraction Fraction::operator*(Fraction &b)
{
    Fraction temp;
    temp.top=top*b.top;
    temp.bottom=bottom*b.bottom;
    return temp;
}
Fraction Fraction::operator/(Fraction &b)
{
    Fraction temp;
    temp.top=top*b.bottom;
    temp.bottom=bottom*b.top;
    return temp;
}

iFraction.h

#include"Fraction.h"
class iFraction:public Fraction
{
    private:
        int left;
    public:
        iFraction(int x=0,int y=1,int z=0):Fraction(x,y),left(z){}
        void print();
};

iFraction.cpp

#include"iFraction.h"
#include<iostream>
#include<iomanip>
using namespace std;
void iFraction::print()
{
    if(top==0)
        cout<<setw(4)<<left<<endl;
    else if(left==0)
    {
        cout<<setw(4)<<top<<endl;
        cout<<setw(4)<<'-'<<endl;
        cout<<setw(4)<<bottom<<endl;
    }
    else
    {
        cout<<setw(4)<<top<<endl;
        cout<<setw(3)<<left<<'-'<<endl;
        cout<<setw(4)<<bottom<<endl;
    }
}

main.cpp

#include <iostream>
#include "iFraction.h"
using namespace std;
int main()
{
    Fraction a(3,4);//8/6
    Fraction b(5);
    Fraction c;
    cout<<"a=";
    a.show();
    cout<<"b=";
    b.show();
    cout<<"c=";
    c.show();
    c=a+b;
    cout<<"c=a+b=";c.show();
    c=a-b;
    cout<<"c=a-b=";c.show();
    c=a*b;
    cout<<"c=a*b=";c.show();
    c=a/b;
    cout<<"c=a/b=";c.show();
    iFraction d(1,2,3);
    cout<<"d="<<endl;
    d.print();
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/MINT510845604/p/9108634.html