抽象基类和纯虚函数

本文通过一个C++程序示例介绍了如何实现学生和教师信息的输入与显示功能,利用了面向对象的多态性特性。程序设计中,创建了一个抽象基类person,以及从该基类派生的student和teacher两个子类。

2.编写一个学生和教师数据输入和显示的程序。学生数据有编号(no)、姓名(name)和成绩(grade),教师数据有编号(no)、姓名(name)和职称(prof)。要求将编号、姓名的输入和显示设计成一个类person,并作为学生数据类student和教师数据类teacher的基类。且父类要求定义为抽象类,由子类对其纯虚函数进行重新定义,并编写主程序进行执行,体现多态性。

这个题网上都有,但是我觉得答案都不太好,所以自己写了一个,反正自己还算满意吧,大家可以将就着看看。

#include<iostream>
#include<string>
using namespace std;
class person{
       protected:
               char  name[20];
                int number;
      public :
             person(){}
             person(char* na,int num):number(num){strcpy(name,na);}
             virtual void input(){
                     cout<<"please input name and number:";
                     cin>>name>>number;
                     }
             virtual void print()=0;
             };
   class student:public person{
         float grade;
         public :
                student(char* na,int num,float ge):person(na,num),grade(ge){}
               void input(){
                        person::input();
                        cout<<"input grade:";
                        cin>>grade;
                        }
             void   print(){
                        cout<<"the student's name is "<<name<<"  number is "<<number<<" grade is "<<grade<<endl;
                        }
                        } ;
class teacher :public person{
         char professor[20];
         public :
                teacher(){}
                teacher(char* na,int num,char* pro):person(na,num){strcpy(professor,pro);}
              void  input(){
                    person::input();
                    cout<<"input professinor:";
                    cin>>professor;
                        }
              void  print(){
                        cout<<"the teacher's name is "<<name<<" number is "<<number<<" pro is "<<professor<<endl;
                        }
                        } ;
int main(){
    student stu("ruchu",2008,100);
   // stu.input();
    teacher th("lijianli",123,"associate professor");
 //  th.input();
    stu.print();
    th.print();
    system("pause");
return 0;
}
                       
这是是在DEV c++中运行成功的,如果在其他版本的编译器中,估计得改改吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值