文档详情

c++的多态性编程.doc

发布:2017-12-09约2.85千字共6页下载文档
文本预览下载声明
C++实验 一:实验目的和要求 了解多态性在C++中的体现; 掌握虚函数的使用; 了解抽象类。 二:题目内容 定义一个基类为哺乳动物类mammal,其中有数据成员年龄、重量、品种,有成员函数move()、speak()等,以此表示动物的行为。由这个基类派生出狗、猫、马、猪等哺乳动物,它们都有各自的行为。编程分别使各个动物表现出不同的行为。 三:相关知识 1:多态性 编译时的多态,运行时的多态性。 2:虚函数 Virtual 函数类型 函数名(形参表); 3: 抽象类 抽象类是带有纯虚函数的类。 纯虚函数的定义: virtual 函数类型 函数名(参数表)=0; 注意:(1)抽象类不能直接建立抽象类对象; (2)抽象类不能用作参数类型、函数返回类型或显示转换的类型; (3) 可以说明指向抽象类的指针和引用,此指针可以指向他的派生类,进而实现多态性; 四:程序设计思想 1:为实现动态联编,首先建立 Mammal抽象类,以此抽象类作为 基类,派生dog、cat、horse、pig类。其中Mammal类数据 员有(姓名)name 、(年龄)age、(重量)we 。 还有成员函数 move()、speak(),定义为纯虚函数: virtual void move()=0;virtual void speak()=0; 另一个成员函数display(),申明为虚函数virtual void display(); 2:建立各个派生类dog、cat、horse、pig。然后建立构造函数为其初始化。再把move()、speak()定义。 3:main()函数中建立指向Mammal的指针数组,并为各派生类初始化。把指针数组分别指向各个派生类。设计一个循环来显示派生类对象的信息。 五:程序 #includeiostream.h #includestring.h class Mammal { protected: char name[10]; int age; int we; public: virtual void move()=0; virtual void speak()=0; virtual void display() { cout姓名:nameendl; cout它的年龄:age岁endl; cout它的重量:wekgendl; } }; class dog:public Mammal { public: dog(char *s,int a,int w) { strcpy(name,s); age=a; we=w; } void move() { cout它的行为; cout吃骨头; cout 看门endl; } void speak() { cout它的叫声:; coutbarkendl; } void display() { Mammal::display(); speak(); move(); } }; class cat:public Mammal { public: cat(char *s,int a,int w) { strcpy(name,s); age=a; we=w; } void move() { cout它的行为; cout吃鱼 捉老鼠endl; } void speak() { cout它的叫声:; coutmewendl; } void display() { Mammal::display(); speak(); move(); } }; class horse:public Mammal { public: horse(char *s,int a,int w) { strcpy(name,s); age=a; we=w; } void move() { cout它的行为; cout奔驰 吃草endl; } void speak() { cout它的叫声:; coutneighendl; } void display() { Mammal::display(); speak(); move(); } }; class pig:public Mammal { public: pig(char *s,int a,int w) { strcpy(name,s); age=a; we=w; } void move() {
显示全部
相似文档