c++ 实验六
1.芯片
class xinpian{
public:
xinpian(int m0,int n0);
void jia();
private:
int m;
int n;
};
class xinpianA:public xinpian{
public:
xinpianA(int m0,int n0);
void jian();
private:
int m;
int n;
};
class xinpianB:public xinpian{
public:
xinpianB(int m0,int n0);
void chen();
private:
int m;
int n;
};
class xinpianC:public xinpian{
public:
xinpianC(int m0,int n0);
void chu();
private:
int m;
int n;
};
#include"xinpian.h"
#include<iostream>
using namespace std;
xinpian::xinpian(int m0,int n0):m(m0),n(n0){
};
void xinpian::jia(){
cout<<m+n<<endl;
};
xinpianA::xinpianA(int m0,int n0):xinpian(m0,n0),m(m0),n(n0){
};
void xinpianA::jian(){
cout<<m-n<<endl;
};
xinpianB::xinpianB(int m0,int n0):xinpian(m0,n0),m(m0),n(n0){
};
void xinpianB::chen(){
cout<<m*n<<endl;
};
xinpianC::xinpianC(int m0,int n0):xinpian(m0,n0),m(m0),n(n0){
};
void xinpianC::chu(){
cout<<m/n<<endl;
}
#include"xinpian.h"
#include<iostream>
using namespace std;
int main()
{
xinpianA A(5,2);
A.jia();
A.jian();
xinpianB B(6,3);
B.jia();
B.chen();
xinpianC C(7,4);
C.jia();
C.chu();
return 0;
}

2,
//vehicle.h
class vehicle{
public:
vehicle(int max, int wei);
void run();
void stop();
int maxspeed;
int weight;
~vehicle();
};
class bicycle: virtual public vehicle{
public:
bicycle(int max, int wei, int hei);
int height;
~bicycle();
};
class motorcar: virtual public vehicle{
public:
motorcar(int max,int wei, int sea);
int seatnum;
~motorcar();
};
class motorcycle: public bicycle, public motorcar{
public:
int max;
int wei;
int hei;
int sea;
motorcycle(int max,int wei,int hei,int sea);
~motorcycle();
};
//vehicle.cpp
#include"vehicle.h"
#include<iostream>
using namespace std;
void vehicle::run(){
cout<<"run"<<endl;
}
void vehicle::stop(){
cout<<"stop"<<endl;
}
vehicle::vehicle(int max,int wei){
maxspeed=max;
weight=wei;
cout<<maxspeed<<" "<<weight<<" vehicle constrcting"<<endl;
}
vehicle::~vehicle(){
cout<<"vehicle destructing"<<endl;
}
bicycle::bicycle(int max, int wei, int hei):vehicle(max,wei),height(hei){
cout<<maxspeed<<" "<<weight<<" "<<height<<" bicycle constrcting"<<endl;
}
bicycle::~bicycle(){
cout<<"bicycle destructing"<<endl;
}
motorcar::motorcar(int max,int wei, int sea):vehicle(max,wei),seatnum(sea){
cout<<maxspeed<<" "<<weight<<" "<<seatnum<<" motorcar constrcting"<<endl;
}
motorcar::~motorcar(){
cout<<"motorcar destructing"<<endl;
}
motorcycle::motorcycle(int max,int wei,int hei,int sea):vehicle(max,wei),bicycle(max,wei,hei),motorcar(max,wei,sea){
cout<<maxspeed<<" "<<weight<<" "<<height<<" "<<seatnum<<" motorcycle constructing"<<endl;
}
motorcycle::~motorcycle(){
cout<<"motorcycle destructing"<<endl;
}
//main.cpp
#include"vehicle.h"
#include<iostream>
using namespace std;
int main(){
motorcycle mo(1,2,3,4);
mo.run();
mo.stop();
return 0;
}

3,Fraction
//fraction.h
#include<iostream>
using namespace std;
class Fraction{
public:
Fraction();
Fraction(int a ,int b);
Fraction(int a);
Fraction operator +(const Fraction &c2)const;
Fraction operator -(const Fraction &c2)const;
Fraction operator *(const Fraction &c2)const;
Fraction operator /(const Fraction &c2)const;
friend ostream & operator<<(ostream &out, const Fraction &c);
void get();
private:
int top;
int bottom;
};
class iFraction:public Fraction{
public:
iFraction(int x,int y);
void show();
int top1;
int bottom1;
friend void convertF(const iFraction &c);
};
//fraction.cpp
#include"fraction.h"
#include<iostream>
using namespace std;
Fraction::Fraction() :top(0), bottom(1) {
}
Fraction::Fraction(int a) : top(1), bottom(a) {
}
Fraction::Fraction(int a, int b) : top(a), bottom(b) {
}
Fraction Fraction::operator +(const Fraction &c2)const{
return Fraction(top*c2.bottom+bottom*c2.top,bottom*c2.bottom);
}
Fraction Fraction::operator -(const Fraction &c2)const{
return Fraction(top*c2.bottom-bottom*c2.top,bottom*c2.bottom);
}
Fraction Fraction::operator *(const Fraction &c2)const{
return Fraction(top*c2.top,bottom*c2.bottom);
}
Fraction Fraction::operator /(const Fraction &c2)const{
return Fraction(top*c2.bottom,bottom*c2.top);
}
ostream & operator<<(ostream &out, const Fraction &c){
if(c.top==0)
out<<"0";
else
out<<c.top<<"/"<<c.bottom;
return out;
}
void Fraction::get(){
int x,y;
cout<<"get the top and bottom"<<endl;
cin>>x>>y;
top=x;
bottom=y;
}
iFraction::iFraction(int x,int y):Fraction(x,y),top1(x),bottom1(y){
}
void iFraction::show(){
cout<<top1<<"/"<<bottom1<<endl;
}
void convertF(const iFraction &c){
if(c.top1==c.bottom1)
cout<<"1"<<endl;
if(c.top1>c.bottom1)
{
int m,n;
m=c.top1/c.bottom1;
n=c.top1%c.bottom1;
cout<<"("<<m<<")"<<n<<"/"<<c.bottom1<<endl;
}
}
//main.cpp
#include"fraction.h"
#include<iostream>
using namespace std;
int main()
{
Fraction a;
Fraction b(5);
Fraction c(2,3);
iFraction d(4,5);
iFraction e(7,3);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
d.get();
cout<<d<<endl;
d.show();
c=a+b;
cout<<c<<endl;
c=a-b;
cout<<c<<endl;
c=b*d;
cout<<c<<endl;
c=b/d;
cout<<c<<endl;
convertF(e);
return 0;
}

本次实验在实验三时发现iFraction的对象d在通过get()改变后,show()和cout 显示的结果却不一样,发现get()只是改了基类的数据成员,可把get()改成iFraction的成员函数时却报错???,

浙公网安备 33010602011771号