第六次实验

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;
      } 


运行结果截图
技术分享图片

 这题的大体结构和第一题是类似的,但是每个模板都有新增成员函数,这些成员函数便属于它们的保护类了,但是这题的结果还是不对,我运行之后并没有显示出自己输入的数据,不懂问题出在哪里。

 

 





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

GPU 编程第六次作业(实验七)

第六次实验

第六次实验

第六次实验报告

第六次实验报告

第六次作业