将本章11.8节中的程序片段加以补充完善,成为一个完整的程序。在程序中使用继承和组合。在定义Professor  类对象prof1时给出所有数据的初值,然后修改prof1的生日数据,最后输出prof1的全部最新数据。

以下是此题的【c++源代码】
#include <iostream>
#include <cstring>
using namespace std;
class Teacher                                //教师类
 {public:
    Teacher(int,char [],char);               //声明构造函数
    void display();                          //声明输出函数
  private:
   int num;
   char name[20];
   char sex;
  };

Teacher::Teacher(int n,char nam[],char s)    //定义构造函数
 {num=n;
  strcpy(name,nam);
  sex=s;
}

void Teacher::display()                      //定义输出函数
 {cout<<"num:"<<num<<endl;
  cout<<"name:"<<name<<endl;
  cout<<"sex:"<<sex<<endl;
}

class BirthDate                               //生日类
 {public:
    BirthDate(int,int,int);                   //声明构造函数
    void display();                           //声明输出函数
    void change(int,int,int);                 //声明修改函数
  private:
    int year;
    int month;
    int day;
};

BirthDate::BirthDate(int y,int m,int d)       //定义构造函数
 {year=y;
  month=m;
  day=d;
 }
 
void BirthDate::display()                     //定义输出函数
 {cout<<"birthday:"<<month<<"/"<<day<<"/"<<year<<endl;}

void BirthDate::change(int y,int m,int d)     //定义修改函数
 {year=y;
  month=m;
  day=d;
 }
 
class Professor:public Teacher                         //教授类
 {public:
    Professor(int,char [],char,int,int,int,float);    //声明构造函数
    void display();                                   //声明输出函数
    void change(int,int,int);                         //声明修改函数
   private:
    float area;
    BirthDate birthday;                               //定义BirthDate类的对象作为数据成员
 };

Professor::Professor(int n,char nam[20],char s,int y,int m,int d,float a):
 Teacher(n,nam,s),birthday(y,m,d),area(a){ }          //定义构造函数

void Professor::display()                             //定义输出函数
{Teacher::display();
 birthday.display();
 cout<<"area:"<<area<<endl;
}

void Professor::change(int y,int m,int d)             //定义修改函数
 {birthday.change(y,m,d);
 }

int main()
{Professor prof1(3012,"Zhang",'f',1949,10,1,125.4);   //定义Professor对象prof1
 cout<<endl<<"original data:"<<endl;
 prof1.display();                                     //调用prof1对象的display函数
 cout<<endl<<"new data:"<<endl;
 prof1.change(1950,6,1);                              //调用prof1对象的change函数
 prof1.display();                                     //调用prof1对象的display函数
 return 0;
}

来源:c++程序设计第三版谭浩强课后答案

本文链接:http://www.wb98.com/cjia/post/cjia_11.10.html


本站文章搜索:

<< 上一篇下一篇 >>

搜索

Tags列表

赞助商链接