实验七: 继承与派生(一)
1. 定义一个shape基类,在此基础上派生出rectangle和circle,二者都有getarea()函数计算对象的面积。使用rectangle类创建一个派生类square。
实验分析:首先定义出shape类,然后定义getarea函数,然后派生出rectangle和circle,最后在main函数中输出各项结果。
程序**:#include
using namespace std;
const double pi=3.1415926;
class shape
public:
double getarea()
void getsquare()
int main()
rectangle *r=new rectangle(6,8);
r->getarea();
circle *c=new circle(4);
c->getarea();
square *s= new square(6,6);
s->getsquare();
delete r;
delete c;
delete s;
实验结果:2. 定义一个哺乳动物mammal类,再由此派生出狗dog类,定义一个dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。
实验分析:本题很简单,了解基类和派生类的构造函数与析构函数的调用顺序即可。
程序**:#include
using namespace std;
class animal
public:
animal(int i) ;
class dog:public animal
public:
dog(int a):animal(a);
int main()
dog obj(1);
return 0;
实验结果:3. 编写一个程序,设计一个汽车类,包含的数据成员有:
车轮个数和车重。小车类car是它的私有派生类,其中包含载人数。卡车类是汽车类的私有派生类,其中包含载人数和载重量。
每个类都有相关数据的输出方法。
实验分析:先定义汽车类,由它派生出car类和truck类将公共的属性和方法放在vehicle类中。
程序**:#include
using namespace std;
class vehicle //定义汽车类。
protected:
int wheels; /车轮数。
float weight; /重量。
public:
vehicle(int wheels,float weight);
int get_wheels();
float get_weight();
void show();
class car:private vehicle //定义小车类。
int passenger_load; /载人数。
public:
car(int wheels,float weight,int passengers=4);
int get_passengers();
void show();
class truck:private vehicle //定义卡车类。
int passenger_load; /载人数。
float payload载重量。
public:
truck(int wheels,float weight,int passengers=2,float max_load=24000.00);
int get_passengers();
float efficiency();
void show();
vehicle::vehicle(int wheels,float weight)
vehicle::wheels=wheels;
vehicle::weight=weight;
int vehicle::get_wheels()
return wheels;
float vehicle::get_weight()
return weight/wheels;
void vehicle::show()
cout <<车轮:" wheels <<个" cout <<重量:" weight <<公斤" car::car(int wheels, float weight,int passengers) :vehicle (wheels, weight) passenger_load=passengers; int car::get_passengers () return passenger_load; void car::show() truck:: truck(int wheels, float weight,int passengers, float max_load):vehicle(wheels,weight) passenger_load=passengers; payload=max_load; int truck::get_passengers() return passenger_load; float truck::efficiency() return payload/(payload+weight); void truck::show() cout <<车型:卡车" vehicle:: show () cout <<载人:" passenger_load <<人" cout <<效率:" efficiency() endl; cout < void main () car car1(4,2000,5); truck tru1(10,8000,3,340000); cout <<输出结果" car1. show () tru1. show () 实验结果:4. 设计一个圆类和一个桌子类,另设计一个圆桌类,他们是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。 实验分析:circle类包含私有数据成员radius和求圆面积的成员函数getarea();table类包含私有数据成员height和返回高度的成员函数getheight()。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。 程序**:#include<> #include<> class circle double radius; public: circle(double r) double getarea() class table double height; public: table(double h) double getheight() class roundtable : public table,public circle char *color; public: roundtable(double h, double r, char c)circle (r) ,table (h) color=new char[strlen(c)+1]; strcpy (color, c); char *getcolor() void main() roundtable rt(0.9,1.8,"白色"); cout <<圆桌属性数据:" endl; cout <<高度:" 米" 单选题 1 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系 的表达式为。a.a 0 b.ac.a 0 d.a 0 学生答案 c 参 d 2 若变量都已经说明,则以下程序段输出为 a 10 b 50 c 30 if a b a b b c c a printf a db dc d... 7 10定义object类,有weight属性及相应的操作函数,由此派生出box类,增加height和width属性及相应的操作函数,声明一个box对象,观察构造函数与析构函数的调用顺序。解 include class object int getweight void setweight int ... 1题目 定义一个函数min,求n个数中的平均值 最小数和其下标,并在主函数中打印平均值 最小数和下标。格式 int min int s,int n,double er 注意 如有多个最小值,以第一个为准。输出结果见图 样张。jpg include using namespace std progra...C语言第7次作业
c 第7章作业
第7次作业