当前位置:文档之家› 第5章习题参考答案

第5章习题参考答案

9. 假定车可分为货车和客车,客车又可分为轿车、面包车和公共汽车。

请设计相应的类层次结构。

说明:可以把轿车、面包车和公共汽车定义为客车类的对象参考程序:#include<iostream>using namespace std;class vehicle // 定义基类vehicle{public: // 公有函数成员vehicle(int in_wheels,float in_weight); // 给数据成员初始化int get_wheels(); // 获取车轮数float get_weight(); // 获取汽车重量void setWeels(int wls);void setWeight(float wt);void display(){cout<<"车轮数:"<<wheels<<" 汽车重量:"<<weight<<endl;}private: // 私有数据成员int wheels; // 车轮数float weight; // 表示汽车承重};vehicle::vehicle(int in_wheels,float in_weight){wheels = in_wheels;weight = in_weight;}float vehicle::get_weight(){return weight;}int vehicle::get_wheels(){return wheels;}void vehicle::setWeels(int wls){wheels = wls;}void vehicle::setWeight(float wt){weight = wt;}class truck:public vehicle // 定义货车类truck{private: // 新增私有数据成员float weight_load; // 承重public: // 新增公有成员函数truck(int wheel,float wt,float wl):vehicle(wheel,wt){weight_load = wl;}float getLoads(){return weight_load;}void display(){vehicle::display();cout<<"汽车承重"<<weight_load<<endl;}};//车和客车,客车又可分为轿车、面包车和公共汽车class car:public vehicle // 定义客车类car{int passenger_load; // 新增私有数据成员,表示载客数public: // 新增公有成员函数car(int in_wheels,float in_weight,int people=4):vehicle(in_wheels,in_weight) {p assenger_load = people;}int getPassengers(){r eturn passenger_load;}void setPassengers(int people){p assenger_load = people;}void display(){vehicle::display();cout<<"载客数:"<<passenger_load<<endl;}};void main(){truck truck1(8,400,100000); // 货车car car1(4,20); // 客车car saloon_car(4,10,5); // 轿车car microbus(6,10,18); // 面包车car bus(6,20,30); // 公共汽车// 显示相关信息truck1.display();cout<<"---------------------"<<endl;car1.display();cout<<"---------------------"<<endl;saloon_car.display();cout<<"---------------------"<<endl;microbus.display();cout<<"---------------------"<<endl;bus.display();}程序的运行结果:车轮数:8 汽车重量:400汽车承重100000---------------------车轮数:4 汽车重量:20载客数:4---------------------车轮数:4 汽车重量:10载客数:5---------------------车轮数:6 汽车重量:10载客数:18---------------------车轮数:6 汽车重量:20载客数:3010.设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。

使用继承将这些图形分类,找出能作为基类部分的共同特征(如宽、高、中心点等)和方法(如初始化、求面积等),并看看这些图形是否能进一步划分为子类。

参考程序:#include<iostream>using namespace std;class Figure // 定义基类图形类{public: // 公有函数成员Figure(int wid){width = wid;}float area(){}int getWidth(){return width;}private: // 私有数据成员int width; // 宽度或半径};class Rectangle:public Figure{ // 定义矩形类i nt height;public:Rectangle(int wid, int hei):Figure(wid){h eight = hei;}float area(){return getWidth() * height;}};class Triangle:public Figure{ // 定义三角形类int height;public:Triangle(int wid, int hei):Figure(wid){h eight = hei;}float area(){return 1.0/2* getWidth() * height;}};class Circle:public Figure{ // 定义圆类public:Circle(int wid):Figure(wid){}float area(){return 3.14 * getWidth() * getWidth();}};void main(){Rectangle rect(5,4);Triangle tri(5,4);Circle cir(5);cout<<"矩形的面积是:"<<rect.area()<<endl<<"三角形的面积是:"<<tri.area()<<endl<<"圆的面积是:"<<cir.area()<<endl;}程序的运行结果为:矩形的面积是:20三角形的面积是:10圆的面积是:78.511.考虑大学的学生情况,试利用单继承来实现学生和毕业生两个类,设计相关的数据成员及函数,编程对继承情况进行测试。

参考程序:#include<iostream.h>#include<string.h>class Student // 定义基类vehicle{public: // 公有函数成员Student(int n,char *na,int g):number(n),grade(g){s trcpy(name,na);}int getNumber(){r eturn number;}char * getName(){r eturn name;}int getGrade(){r eturn grade;}void display(){c out<<"学号:"<<number<<endl<<"姓名:"<<name<<endl<<"年级:"<<grade<<endl;}private: // 私有数据成员int number; // 学号char name[20]; // 姓名int grade; // 年级};class Graduate:public Student{ //定义毕业生类char designSubject[20];public:Graduate(int n,char *na,char * deSub,int g=4):Student(n,na,g) { strcpy(designSubject,deSub);}void display(){S tudent::display();c out<<"设计题目:"<<designSubject<<endl;}};void main(){//创建对象Student li(2,"Li Ming",3);Graduate zhang(3,"Zhang Gang","学生成绩管理系统");// 显示对象的相关信息li.display();cout << endl<<"-----------------------------------" <<endl;zhang.display();}程序的运行结果:学号:2姓名:Li Ming年级:3-----------------------------------学号:3姓名:Zhang Gang年级:4设计题目:学生成绩管理系统12. 定义一个哺乳动物类,再由此派生出人类、狗类和猫类,这些类中均有speak()函数,观察在调用过程中,到底使用了谁的speak()函数。

相关主题