方式以及基类成员的访问方式,再测试看看基类和派生类的属性访问方式有何不同。
(2)编程:在上述工程中增加一个Teacher(教师)类,采用多重继承方式由
Student和Teacher类公有派生出新类Student_Teacher。要求:
① Teacher类的保护成员有:Name、Sex、Title(职称)、Wages(工资)。两
个基类中的Name、Sex同名,在引用这些数据成员时,指定作用域。
②在派生类Student_Teacher中,增加两个成员函数:ReadF1()用于读入:
Num、Name、Sex、Title、Wages。Show()用于输出数据,在Show()中,首先调用Student类的display()函数用于输出Num、Name、Sex,然后再用cout语句输出Title、Wages。
③在类体中声明成员函数,在类外定义成员函数。 思考题:类的三种继承方式的主要区别是什么?
实验步骤: (1)启动Visual C++6.0开发环境;
(2)创建一个项目;
(3)建立C++源程序文件; (4)编辑C++源程序文件内容; (5)建立并运行可执行程序; (6)关闭工作空间。
#include
classCrectangle {
public:
intlen, wid,s; int area();
void set(int, int); void get(); };
intCrectangle::area() {
s = len*wid; return s; }
voidCrectangle::set(int m, int n) {
len = m; wid = n; }
voidCrectangle::get() {
cout<< \ cout<< \ cout<< \
}
int main() {
Crectangle rec; rec.set(3,4); rec.area(); rec.get(); }
实验要求: (1)掌握继承与派生的概念;
(2)掌握通过继承派生出一个新的类的方法; (3)程序格式规范,程序运行正确;
(4)认真书写实验报告,如实填写各项实验内容。
实验四类的多态性与虚函数
(实验课时:2 实验性质:设计)
实验名称: 类的多态性与虚函数 实验目的: (1)了解多态性的概念;
(2)了解虚函数的作用和使用方法;
(3)了解纯虚函数和抽象类的概念和用法。
实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);
(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual
C++6.0。
实验内容: 事先编好程序,上机调试和运行程序,分析结果。
(1)编程:定义抽象基类Shape(图形)。
Shape类有一个公共的纯虚函数Area,用于派生类求图形的面积。 (2)由Shape派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三
角形),用一个函数PrintArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
在主程序中测试这些类的PrintArea函数。
(3)在类Circle基础上再派生一个圆柱体Cylinder,重载Area函数求圆柱体的
体积。然后,编写主程序采用静态多态性和动态多态性分别测试Area函数。
(4)在类Circle中定义一个析构函数,让它输出一行信息“This is Cicle
Destruction。”,在类Cylinder中定义一个析构函数,让它输出一行信息“This is Cylinder Destruction。”。
在主程序中用指向基类Circle类的指针动态生成Cylinder类对象,然后用delete
语句释放该对象,测试看看运行结果如何。再修改Circle的析构函数为虚函数,测试看看运行结果如何。
(5)运行上述程序,并分析结果。
实验要求: (1)掌握多态性的概念;
(2)掌握虚函数的作用和使用方法;
(3)掌握纯虚函数和抽象类的概念和用法; (4)程序格式规范,程序运行正确;
(5)认真书写实验报告,如实填写各项实验内容。
思考题:虚函数的作用是什么?
#include
private:
char brand[10], color[10]; bool door, lamp; double speed; public:
Car(char s1[], char s2[]); voidopen_door(); voidopen_lamp(); voidspeed_up(); voidspeed_down(); };
Car::Car(char s1[], char s2[]) {
inti;
for (i = 0; s1[i]; i++) { color[i] = s1[i]; }
for (i = 0; s2[i]; i++) { brand[i] = s2[i]; }
door = false; lamp = false; speed = 0;
}
cout<< \颜色: \for (i = 0; s1[i]; i++) cout<< color[i]; cout< void Car::open_door() { door = true; cout<< \车门已经打开\} void Car::open_lamp() { lamp = true; } void Car::speed_up() { speed += 10.0; cout<< \加速-----行驶速度为: \} void Car::speed_down() { speed -= 10.0; if (speed < 0) speed = 0; cout<< \减速-----行驶速度为: \} int main() { Car car(\ car.open_lamp(); car.open_door(); car.speed_up(); car.speed_down(); system(\ return 0; } 实验步骤: (1)启动Visual C++6.0开发环境; (2)创建一个项目; (3)建立C++源程序文件; (4)编辑C++源程序文件内容; (5)建立并运行可执行程序,并分析结果; (6)关闭工作空间。