第一题
#includeusing namespace std;class M{ //定义M基类 public: int m,n; M(int i,int j):m(i),n(j){} ~M() {} //析构函数 int add(){cout<<"m+n="< < >m>>n; //输入m,n的值 A a(m,n); a.add() ; //访问函数成员 a.minus(); cin>>m>>n; B b(m,n); b.add(); b.multiplication(); cin>>m>>n; C c(m,n); c.add(); c.division(); cin>>m>>n;return 0; };
运行结果
这题我刚开始在每一个类中都插入了私有函数成员,后来发现是多此一举的,只要在每个的结构中都声明一下m,n便可以。这道题主要掌握的便是派生的结构,以定义类为例 class A:public base, 从而就不用反复写这三个模板中都具有的加法函数了。做题的时候脑子有点糊,在main 函数中测试A芯片时忘记写输入m,n值的语句了,结果还调试了半天,基础知识掌握不牢,这方面还很有待加强。
第二题
#includeusing namespace std;class vehicle //定义车这个基类{protected:int maxspeed,weight; //定义protected类数据成员maxspeed和weightpublic: //公有端接口 ~vehicle(){} //析构函数vehicle (int m, int w):maxspeed(m),weight(w){} //构造函数 void run() //函数成员run(){cout<<"启动"<
这题的大体结构和第一题是类似的,但是每个模板都有新增成员函数,这些成员函数便属于它们的保护类了,但是这题的结果还是不对,我运行之后并没有显示出自己输入的数据,不懂问题出在哪里。
第三题
Fraction.h
#includeusing namespace std;class Fraction{ public: Fraction(int i,int j):top(i),bottom(j){} Fraction operator+(const Fraction &a)const; Fraction operator-(const Fraction &a)const; Fraction operator*(const Fraction &a)const; Fraction operator/(const Fraction &a)const; void show() const; private: int top; int bottom; };
Fraction.cpp
#include#include using namespace std;Fraction Fraction ::operator+(const Fraction &a)const{return Fraction(top+a.top,bottom+a.bottom);}Fraction Fraction::operator-(const Fraction &a)const{return Fraction (top-a.top,bottom-a.bottom);}Fraction Fraction::operator*(const Fraction &a)const{return Fraction(top*a.top, bottom*a.bottom);}Fraction Fraction::operator/(const Fraction &a)const{return Fraction(top/a.top,bottom/a,bottom);}void Fraction::display()const{cout<<"("< <<","< <<")"<
iFration.h
#include"Fraction.h"class iFraction:public Fraction { public: iFraction(int i=0,int j=1); void print(); ~iFraction(); friend iFraction convertF(iFraction &a);};
表示最后两个没写出来,我明天再改改。。。。