您的当前位置:首页正文

c++实验8 继承与派生上机练习题

来源:一二三四网
1. 定义一个哺乳动物类Mammal,并从中派生出一个狗类Dog,下面给出Mammal类的定义,要求:

(1) 添加Dog类的颜色数据成员,访问属性为私有,通过SetColor和GetColor成员函数来对颜色进行设置和获取。

(2) 分别为基类和派生类添加相应的构造函数(有参、无参)和析构函数,并进行测试。

class Mammal {

protected:

int itsAge; int itsWeight; public:

int GetAge(){return itsAge;}

void SetAge(int age) {itsAge=age;} int GetWeight() { return itsWeight;}

void SetWeight(int weight) {itsWeight= weight;} };

class Dog : public Mammal {

//定义Dog类的数据成员和成员函数 }; 改:

#include #include using namespace std; class Mammal {

protected:

int itsAge; int itsWeight; public:

Mammal(); ~Mammal();

int GetAge(){return itsAge;}

void SetAge(int age) {itsAge=age;} int GetWeight() { return itsWeight;}

void SetWeight(int weight) {itsWeight= weight;} };

class Dog : public Mammal {

protected:

char itscolor[20]; public: Dog();

void Setcolor(char *color) {strcpy(itscolor,color);}

void getcolor(){cout<<\"狗的颜色\"<//////////////////////// Mammal::Mammal() {

int age1,weight1;

cout<<\"请输入动物的年龄:\"<>age1; SetAge(age1);

cout<<\"请输入动物的体重:\"<>weight1;

SetWeight(weight1); }

Mammal::~Mammal() {

cout<<\"Destructor called.\"<Dog::Dog()

{char color[20];

cout<<\"请输入狗的颜色:\"<>color;Setcolor(color);

cout<<\"狗的颜色\"<void main() {

Dog dog1; }

(4)设计人员基类Person。其成员包括:

数据成员:姓名(字符数组)、性别(字符数组)和年龄(整型) 成员函数:SetPerson,设置人员数据函数;

DisplayPerson,显示人员数据函数;

设计派生类1:Teacher,派生于Person。新增成员包括:

数据成员:职称(字符数组)、教研室(字符数组)和所授课程(字符数组) 成员函数:SetTeacher,设置数据成员函数;

DisplayTeacher,显示数据成员函数;

设计派生类2:Student,派生于Person。新增成员包括:

数据成员:专业(字符数组)、班级(字符数组)和类别(int) 其中类别取值:1(本科生)、2(硕士生)、3(博士生) 成员函数:SetStudent,设置数据成员函数;

DisplayStudent,显示数据成员函数;

设计派生类3:PostDoctor(博士后),多重继承于Student与Teacher。新增成员包括:

数据成员:无

成员函数:SetPostDoctor,设置数据成员函数;

DisplayPostDoctor,显示数据成员函数;

主函数:

输入并输出一个教师、一个本科生、一个博士后数据。

#include #include using namespace std; #define n 20

////////////类的定义 class Person {

protected: char name[n]; char sex[n]; int age; public: Person(); void setperson(); void displayperson(); };

class Teacher :virtual public Person {

protected: char job[n]; char room[n]; char subject[n]; public :

Teacher(); void setteacher(); void displayteacher(); };

class Student:virtual public Person { protected: char major[n]; char banji[n]; int leibie; public : Student(); void setstudent(); void displaystudent(); };

class Postdoctor:public Teacher,public Student {

public : Postdoctor(); void setpostdoctor(); void displaypostdoctor(); };

/////////////结构函数 Person::Person() { setperson(); }

Teacher::Teacher() { setteacher(); }

Student::Student() { setstudent(); }

Postdoctor::Postdoctor()

{ }

//////////////////设置数据////////////////// void Person::setperson() { cout<<\"*****\"<<\"姓名:\"; cin>>name; cout<<\"*****\"<<\"性别:\"; cin>>sex; cout<<\"*****\"<<\"年龄:\"; cin>>age; }

void Teacher::setteacher() { cout<<\"*****\"<<\"职称:\"; cin>>job; cout<<\"*****\"<<\"教研室:\"; cin>>room; cout<<\"*****\"<<\"所授课程:\"; cin>>subject; }

void Student::setstudent() { cout<<\"*****\"<<\"专业:\"; cin>>major; cout<<\"*****\"<<\"班级:\"; cin>>banji; cout<<\"*****\"<<\"类别(1本科2硕士3博士):\"; cin>>leibie; }

/////////////数据显示/////////// void Person::displayperson() { cout<<\"姓名:\"<void Teacher::displayteacher() { displayperson(); cout<<\"职称:\"<void Student::displaystudent() { displayperson(); cout<<\"专业:\"<void Postdoctor::displaypostdoctor() { displayperson(); cout<<\"职称:\"</////////////////// void main() {

cout<<\"您正在输入一个老师的信息:\"<cout<<\"***************************************************************************syy割\"<cout<<\"您正在输入一个学生的信息:\"<cout<<\"***************************************************************************syy割\"<cout<<\"您正在输入一个博士后的信息:\"<cout<<\"***************************************************************************syy割\"<t1.displayteacher(); cout<s1.displaystudent(); cout<p1.displaypostdoctor(); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top