一、实验目的
l 1、掌握用重载运算符的方法。
l 2、理解并掌握利用虚函数实现动态多态性和编写通用程序的方法。
3、理解纯虚函数的使用方法。
二、准备内容
1、实验课前需预习实验内容,并做好实验设计。
2、复习视频及课上所讲授的C++中多态性的C++基本知识。
三、实验内容
设计并完成项目八:慕课网站上第八周的编程作业。
四、实验步骤
(一)编程代码
1.
#include<iostream> //头文件
using namespace std; //指定名字空间
class Pet //定义派生类Pet
{
public: //公有基类
Pet()
{}
~Pet()
{}
virtual void Speak()
{
cout << "How does a pet speak?" << endl; //输出How does a pet speak?
}
private: //私有基类
};
class Cat: //派生类;猫类
public Pet
{
public: Cat()
{}
~Cat()
{}
virtual void Speak()
{
cout << "miao!miao!" << endl; //输出miao!miao!
}
private:
};
class Dog: //派生类;狗类
public Pet
{
public: Dog()
{}
~Dog()
{}
virtual void Speak()
{
cout << "wang!wang!" << endl; //输出wang!wang!
}
private:
};
int main() //主函数
{
Pet pet1;
Dog dog1;
Cat cat1;
Pet *point; //基类对象指针point
point = &pet1; //用pet类对象地址给基类指针赋值
point->Speak(); //通过基类指针point调用成员函数Speak()
point = &cat1; //用cat类对象地址给基类指针赋值
point->Speak(); //通过基类指针point调用成员函数Speak()
point = &dog1; //用dog类对象地址给基类指针赋值
point->Speak(); //通过基类指针point调用成员函数Speak()
system("pause"); //暂停
return 0;
}
2.
#include <iostream> //头文件
#include <string.h> //头文件
using namespace std; //指定名字空间
class Pet //定义派生类Pet
{
protected: //保护基类
char Name[10]; //定义一个大小为10的字符型数组Name
int Age; //声明整型变量Age
char Color[10]; //定义一个大小为10的字符型数组Color
public: //公有基类
Pet(char name[],int age,char color[]) //声明三个形参
{
this->Age = age; //通过this指针调用Age
strcpy(this->Color , color); //用strcpy( , )函数实现一个形参字符数组给成员变量颜色赋值
strcpy(this->Name, name); //用strcpy( , )函数实现另一个形参字符数组给成员变量姓名赋值
}
~Pet()
{}
virtual void Speak() = 0;
virtual void GetInfo() = 0; //纯虚函数声明
};
class Cat: