使用VC6打开考生文件夹下的工程test4_3。此工程包含一个源程序文件test4_3.cpp,其对一个学校的教师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teach

admin2009-01-15  80

问题 使用VC6打开考生文件夹下的工程test4_3。此工程包含一个源程序文件test4_3.cpp,其对一个学校的教师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teacher作为person类的派生类。请按要求完成下列操作,将程序中的类定义补充完整。
   (1)定义基类person的私有数据成员name和age,分别用于表示姓名和年龄,name为字符指针,age为血型的数据。请在注释“//**1**”之后添加适当的语句。
   (2)完成基类person的重载构造函数person(char *mint a)的定义,把数据成员name,age分别初始化为参数n,a的值,请在注释“//**2**”之后添加适当的语句。
   (3)根据主函数main中对s1的声明,定义派生类student的构造函数。在注释“//**3**”之后添加适当的语句。
   (4)完成派生类teacher成员函数void setinf(ehar *n,int a,char *d,char *1)的定义,其功能为记录教师的姓名、年龄、院,系与职称信息。请在注释“//**4**”之后添加适当的语句。
   输出结果如下:
   刘雷(45)destructor
   蒋军(23)destructor
   注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
   源程序文件test4_3.cpp清单如下:
   #include<iostream.h>
   class person
    {
     //**1**
   public:
     person(){}
     person(char *n,int a)
     {
       //**2**
     }
     void setname(char *n){name=n;)
     void setage(int a){age=a;}
     ~person(){cout<<name<<"("<<age<<")destructor"<<endl;)
   };
   class student:public person
   {
     char *department;
     int code;
   public:
      //**3**
   {
   department=d;
   code=c;
   }
   };
   class teacher:public person
   {
     char *department;
     char *level;
   public:
     teacher(){}
     void setinf(char *n,int a,char *d,char *1)
     {
          //**4**
   department=d;
     level=1;
     }
   };
   void main()
   {
     student s1("蒋军",23,"计算机学院",2);
     teacher t1;
     t1.setinf("刘雷",45,"计算机学院","教授");
   }

选项

答案(1) char *name; int age; (2) name=n; age=a; (3) student(char *n,int a,char *d,int c):persomn(n,a) (4) setname(n); setage(a);

解析 本题考查考生对类的继承与派生的掌握,包括派生类对基类成员的访问和派生类构造函数的定义等知识点。注意派生类构造函数传递参数的功能。
转载请注明原文地址:https://kaotiyun.com/show/8KID777K
0

最新回复(0)