华软C++第三次书面作业
发布时间:2024-10-15
发布时间:2024-10-15
第三次书面作业
1、父亲有正式工作,做司机。私下里,会修电视机。父亲对外说自己贪玩,其实什么都不会玩(虚函数)。
儿子继承了父亲做司机的能力,并且发展了父亲贪玩的特性:打乒乓球。同时,儿子有自己的私有数据成员身高height和体重Weight。
要求:
请给出儿子类的定义,完成构造函数的定义;
重载DoWork()函数,实现输出“ boy Drive a car.”;
实现虚函数play( ),输出“boy Play pingpong.”;
定义自己的函数RepairTV(),其中调用父类RepairTV()实现输出“boy Repair a TV set.”。
#include <iostream>
using namespace std;
class Father{
public:
void doWork(){ cout<<"father drive a car."<<endl; }
virtual void play(){ cout<<"什么都不会玩"<<endl; }
void depairTV(){ cout<<"Repair a TV set."<<endl; } };
class Son:public Father{
public:
Son(float x,float y){
height=x; weight=y;
cout<<"the son height:"<<height<<"weight:"<<weight<<endl; }
void play(){ cout<<"boy Play pingpong."<<endl; }
void doWork(){ cout<<"boy drive a car."<<endl; }
void depairTV(){ Father::depairTV(); }
private:
float height;
float weight;
};
void display(Father &object)
{
object.play();
object.doWork();
}
int main() {
Father f1;
Son s1(175.3,60.5);
} f1.doWork(); f1.play(); s1.doWork(); s1.play(); display(s1); return 0;
2、在程序中定义4个类,UML类图如下图。其中:
People类的所有成员变量的访问权限为protected。所有成员函数的访问权限都为public。CSalery()为虚函数(virtual),函数功能是计算工资额并赋给salery成员变量,构造函数初始化该类的成员变量,setXXX()函数设置该类的成员变量,getXXX()函数返回类的成员变量的值。
Teacher类继承People类,Teacher类的构造函数显式调用其基类的构造函数;CSalery()函数覆盖基类函数,计算工资额公式为2000*workHour。
Worker类继承People类,Teacher类的构造函数显式示调用其基类的构造函数;CSalery()函数覆盖基类函数,计算工资额公式为800*workHour。
Student类继承People类,Student类的构造函数显式调用其基类的构造函数;CSalery()函数覆盖基类函数,计算工资额公式为200*workHour。
在main()函数中定义一个People类的指针数组p[3],使用new运算符分别实例Teacher类、Worker类和Studengt类的实例各一个,指针赋给p[0]、p[1]、p[2];调用各实例的CSalery()函数,输出每个实例name、age和salery。最后delete 3个对象,释放内存。
#include <iostream>
using namespace std;
class People{
public:
People(string n,int a,int c)
{ name=n; age=a; workHour=c; }
void setName(){ cin>>name; }
void getName(){ cout<<"name:"<<name<<endl; }
void setAge(){ cin>>age; }
void getAge(){ cout<<"age:"<<age<<endl; }
void setHour(){ cin>>workHour; }
void getHour(){ cout<<"workHour:"<<workHour<<endl; } virtual void Csalary(){};
void getsalary(){ cout<<"salary:"<<salary<<endl; }
protected:
string name;
int age;
double salary;
int workHour;
};
class Teacher:public People{
public:
Teacher(string n1,int a1,int c1):People(n1,a1,c1)
{
cout<<"the Teacher:"<<endl;
}
void Csalary(){ salary=2000*workHour; }
};
class Worker:public People{
public:
Worker(string n2,int a2,int c2):People(n2,a2,c2){cout<<"the Worker:"<<endl;}
void Csalary(){ salary=800*workHour; }
};
class Student:public People{
public:
Student(string n3,int a3,int c3):People(n3,a3,c3){cout<<"the Student:"<<endl;}
void Csalary(){ salary=200*workHour; }
};
int main() {
People *p[3];
Teacher t("zhangsan",30,10);
p[0]=&t;
p[0]->Csalary();
p[0]->getName();
p[0]->getAge();
p[0]->getHour();
p[0]->getsalary();
Worker w("lisi",31,11);
p[1]=&w;
p[1]->Csalary();
p[1]->getName();
p[1]->getAge();
p[1]->getHour();
p[1]->getsalary();
Student s("wangwu",20,2);
p[2]=&s;
p[2]->Csalary();
p[2]->getName();
p[2]->getAge();
p[2]->getHour();
p[2]->getsalary();
return 0;
}
上一篇:计算机控制技术课后习题答案