实验6,继承

Posted tacore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验6,继承相关的知识,希望对你有一定的参考价值。

//7.1
#include<iostream> using namespace std; class Total{ public: Total(int i,int j){ cout<<"* constructor is called"<<endl; n=i; m=j; } Total(){ cout<<"* constructor is called"<<endl; n=0; m=0; } Total(Total &total){ cout<<"* copy constructor is called"<<endl; n=total.n; m=total.m; } int add(){ return n+m; } ~Total() {cout<<"* destructor is called"<<endl;} private: int n; int m; }; class A: public Total{ private: int n; int m; public: A(int a,int b): Total(a,b),n(a),m(b) {cout<<"A constructor is called"<<endl;}; A():Total(0,0),n(0),m(0) {cout<<"A constructor is called"<<endl;}; int subtract(){ return n-m; } ~A(){cout<<"A destructor is called"<<endl;} }; class B: public Total{ private: int n; int m; public: B(int a,int b): Total(a,b),n(a),m(b) {cout<<"B constructor is called"<<endl;}; B():Total(0,0),n(0),m(0) {cout<<"B constructor is called"<<endl;}; int multiply(){ return n*m; } ~B(){cout<<"B destructor is called"<<endl;} }; class C: public Total{ private: int n; int m; public: C(int a,int b): Total(a,b),n(a),m(b) {cout<<"C constructor is called"<<endl;}; C():Total(0,0),n(0),m(0) {cout<<"C constructor is called"<<endl;}; int divide(){ return n/m; } ~C(){cout<<"C destructor is called"<<endl;} }; int main() { int m,n; cout<<"make sure of the value of m and n"<<endl; cin>>m>>n; A a(m,n); B b(m,n); C c(m,n); cout<<"m + n ="; cout<<a.add()<<endl; cout<<"m - n ="<<a.subtract()<<endl; cout<<"m * n ="<<b.multiply()<<endl; cout<<"m / n ="<<c.divide()<<endl; return 0; }

技术分享图片

//7.2
#include<iostream> using namespace std; class vehicle{ public: vehicle(int i,int j) : maxspeed(i) , weight(j){cout<<"vehicle‘s constructor is called"<<endl;} vehicle() : maxspeed(0) , weight(0){cout<<"vehicle‘s constructor is called"<<endl;} void initvehicle(int n,int m){maxspeed=n;weight=n;} void run(){ cout<<"the vehicle‘s weight is "<<weight<<endl; cout<<"the vehicle‘s speed is "<<maxspeed<<endl; } void stop(){ cout<<"the vehicle has stopped "<<endl; } ~vehicle(){cout<<"vehicle‘s destructor is called"<<endl;} protected: int maxspeed; int weight; }; class bicycle:virtual public vehicle{ public: bicycle(int i,int j,int k):vehicle(i,j),height(k){cout<<"the vehicle(bicycle)‘s constructor is called"<<endl;} bicycle():vehicle(0,0),height(0){cout<<"the vehicle(bicycle)‘s constructor is called"<<endl;} void initbicycle(int n){height=n;} ~bicycle(){cout<<"vehicle(bicycle)‘s destructor is called"<<endl;} protected: int height; }; class motorcar:virtual public vehicle{ public: motorcar(int i,int j,int k):vehicle(i,j),seatnum(k){cout<<"the vehicle(motorcar)‘s constructor is called"<<endl;} motorcar():vehicle(0,0),seatnum(0){cout<<"the vehicle(motorcar)‘s constructor is called"<<endl;} void initmotorcar(int n){seatnum=n;} ~motorcar(){cout<<"vehicle(motorcar)‘s destructor is called"<<endl;} protected: int seatnum; }; class motorcycle:public bicycle,public motorcar{ public: motorcycle(int i,int j,int k,int p):vehicle(i,j),bicycle(i,j,k),motorcar(i,j,p){cout<<"the vehicle(motorcycle)‘s constructor is called"<<endl;} motorcycle():vehicle(),bicycle(),motorcar(){cout<<"the vehicle(motorcycle)‘s constructor is called"<<endl;} ~motorcycle(){cout<<"vehicle(motorcycle)‘s destructor is called"<<endl;} }; int main(){ int m,n,p,q; cout<<"please decide your vehicle‘s maxspeed and weight:"<<endl; cin>>m>>n; cout<<"please decide your motorcar‘s height and seatnum:"<<endl; cin>>p>>q; motorcycle mc(m,n,p,q); system("pause"); mc.run(); system("pause"); mc.stop(); system("pause"); return 0; }

技术分享图片

//7.3 代码大部分见上次fraction类

//main中添加代码    
system("pause");
        cout<<"about ifraction---------------"<<endl;
    cout<<"make sure of the times2:"<<endl;
    int times2;
    cin>>times2;
    while(times2--){
        int p,q;
        cout<<"please make sure of the top and bottom of the fraction: "<<endl;
        cin>>p>>q;
        iFraction ifraction(p,q);
        ifraction.legal();
        convertF(ifraction);
        ifraction.print();

//iFraction类 
class iFraction :public Fraction{
    public:
        iFraction(int n,int m):Fraction(n,m),wholepart(0),fractionparttop(0),fractionpartbottom(0){}
        ~iFraction(){}
        friend void convertF(iFraction &A);
        void print();
    private:
        int wholepart;
        int fractionparttop;
        int fractionpartbottom;
};
//ifraction 实现 
#include<iostream>
#include"ifraction.h"
using namespace std;
void convertF(iFraction &A){
    int i;
    i=A.top;
    int j;
    j=A.bottom;
    if(i>0){
        A.wholepart=i/j;
        A.fractionparttop=i-A.wholepart*j;
        A.fractionpartbottom=j;
    }
    if(i<0){
        i=-1*i;
        A.wholepart=i/j;
        A.fractionparttop=i-A.wholepart*j;
        A.fractionpartbottom=j;
        A.wholepart=-1*A.wholepart;
    }
}

void iFraction::print(){
    if(wholepart!=0)
        cout<<wholepart<<" ("<<fractionparttop<<"/"<<fractionpartbottom<<")"<<endl;
    else 
        cout<<fractionparttop<<"/"<<fractionpartbottom<<endl;
}

 

技术分享图片



以上是关于实验6,继承的主要内容,如果未能解决你的问题,请参考以下文章

实验6 类的继承和多态

实验6,继承

实验6继承和多态

实验6 类的继承和多态

201771010106东文财《面向对象程序设计(java)》 实验6

操作 Java 泛型:泛型在继承方面体现与通配符使用