第六次实验
Posted yyq828
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六次实验相关的知识,希望对你有一定的参考价值。
第一题
#include <iostream> using 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<<endl;} //三个芯片中都存在的加法 }; class A:public M //公有派生,继承M中的加法 { public: A(int i,int j):M(i,j),m(i),n(j){} ~A(){} int minus(){cout<<"m-n="<<m-n<<endl;} int m,n; } ; class B:public M { public: B(int i,int j):M(i,j),m(i),n(j){} ~B(){} int multiplication(){cout<<"m*n="<<m*n<<endl;} int m,n;}; class C:public M { public: C(int i,int j):M(i,j),m(i),n(j) {} ~C(){} int division(){cout<<"m/n="<<m/n<<endl; } int m,n;}; int main() { cout<<"输入两个数"<<endl; int m,n; cin>>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值的语句了,结果还调试了半天,基础知识掌握不牢,这方面还很有待加强。
第二题
#include <iostream> using namespace std; class vehicle //定义车这个基类 { protected: int maxspeed,weight; //定义protected类数据成员maxspeed和weight public: //公有端接口 ~vehicle(){} //析构函数 vehicle (int m, int w):maxspeed(m),weight(w){} //构造函数 void run() //函数成员run() { cout<<"启动"<<endl; } void stop() //函数成员stop() { cout<<"停止"<<endl; } }; class bicycle: virtual public vehicle{ //派生出自行车类 protected: int height; //新增数据成员height public: ~bicycle (){} //析构函数 bicycle (int m, int w, int h):vehicle(w,h),height(h){} void run() { cout<<"自行车高度:"<<height<<endl; } void stop() { cout<<"自行车停止"<<endl; } }; class motorcar:virtual public vehicle //这部分结构和自行车类似,派生出汽车类 { protected: int seatnum; //新增数据函数seatsum public: ~motorcar(){} motorcar(int m, int w, int s):vehicle(m,w),seatnum(s){} void run() { cout<<"汽车位置数:"<<seatnum<<endl; } void stop() { cout<<"汽车停止"<<endl; } } ; class motorcycle: public bicycle, public motorcar //从自行车和汽车中派生出摩托车 { public: ~motorcycle(){} motorcycle(int m, int w, int h, int s):vehicle(m,w),bicycle(m,w,h),motorcar(m,w,s){} //所有数据函数都要包括 void run() { cout<<"摩托车启动"<<endl; } void stop() { cout<<"摩托车停止"<<endl; } }; int main() { motorcycle a(200,80,2,3); cout<<"最大速度:"<<endl; cout<<"重量:"<<endl; cout<<"自行车高度"<<endl; cout<<"汽车位置数量"<<endl; a.run(); a.stop(); return 0; }
运行结果截图
这题的大体结构和第一题是类似的,但是每个模板都有新增成员函数,这些成员函数便属于它们的保护类了,但是这题的结果还是不对,我运行之后并没有显示出自己输入的数据,不懂问题出在哪里。
以上是关于第六次实验的主要内容,如果未能解决你的问题,请参考以下文章