南梦z 2022-05-13 14:33 采纳率: 100%
浏览 52
已结题

关于c++的问题:建立一个抽象类,然后派生出教师类

建立一个抽象类,然后派生出教师类。要求评选出优秀教师(一年发表了3篇论文)

  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-05-13 14:42
    关注

    可以参考一下 抽象类base,教师类teacher

    //评选优秀教师和优秀学生
     
    #include<iostream.h>
    #include<string.h>
     
    class base//定义基类
    {
    protected:
        char name[8];        //姓名
        int chengji;        //chengji 表示学生的成绩    
        int file;            //file 表示论文
    public:
         base(char n[8])
        {
            strcpy(name,n);
        }
         base(int ch=0,int f=0)//构造函数,使基类初始化
         {
             chengji=ch;
             file=f;
         }
         
     virtual bool isgood()=0;    //纯虚函数,判断是否优秀
     virtual void inputname()=0;// 纯虚函数 ,输入姓名
     virtual void inputchji()=0;//纯虚函数,输入成绩
     virtual void inputfile()=0;//纯虚函数,输入论文
     virtual void show()=0;        //纯虚函数,显示优秀的学生和教师
     
    };
     
     
    class student:public base//定义base派生的student类
    {
    public:
        student(int ch=0):base(ch,0)
        {
            inputname();//调用student的inputname(),输入学生的姓名
            inputchji();//调用student的inputchji(),输入学生的成绩
        }
        void inputname()
        {
            cout<<"请输入学生的姓名:";
            cin>>name;
        }
        void inputchji()
        {
            cout<<"请输入成绩:";
            cin>>chengji;
        }
        bool isgood()
        {
            if (chengji>90)
                return true;
            else
                return false;
        }
        void show()//输出优秀学生的姓名
        {
            if (isgood())
                cout<<name<<"是优秀学生"<<endl;
        }
        void inputfile(){}
    };
     
     
    class teacher:public base//定义base派生的teather类
    {
    public:
        teacher(int f=0):base(0,f)//初始化基类的成员函数
        {
            inputname();//调用的teacher的inputname(),输入教师的姓名
     
            inputfile();//调用的teacher的inputfile(),输入教师的论文
        }
        void inputname()
        {
            cout<<"请输入教师的姓名:";
            cin>>name;
        }
        void inputfile()
        {
            cout<<"请输入此教师一年中的论文:";
            cin>>file;
        }
        bool isgood()//判断优秀教师的条件
        {
            if (file>3)
                return true;
            else
                return false;
            
        }
        void show()
        {
            if (isgood())
                cout<<name<<"是优秀教师"<<endl;
        }
        void inputchji(){} //由于基类中定义:virtual void inputchji()=0;的纯虚函数,在派生类中必须定义
                            //否则就会出错,此时这个函数只是形式的需要,在功能方面什么都不做
    };
     
    void main()//主函数
    {
        base *p[100];//定义base类的100个对象的指针
        int i=0;
        int cut=0;
        int type=0;
        cout<<"请输入要评选的人数:";
        cin>>cut;//接收输入的评选的人数
        for(i=0;i<cut;i++)//i是计数器
        {
            cout<<"请选择教师(1)或学生(2):";
            cin>>type;//输入的是教师(1)还是学生(2)
            if (type==1)//判断
                p[i]=new teacher;//定义teacher新对象
            else
                p[i]=new student;//定义student新对象
        }
        for(i=0;i<cut;i++)
        {
            p[i]->show();调用
            delete p[i];//删除对象
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月13日
  • 已采纳回答 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题