实验目的
1. 理解运行时多态
2. 掌握虚函数和抽象类
实验准备
1. 概念
多态,运行时多态
虚函数, 纯虚函数, 抽象类
2. 语法和应用
虚函数的定义和使用纯虚函数、抽象类的定义和使用
实验内容
设计并实现一个机器宠物类MachinePets。
每个机器宠物有如下信息:昵称(nickname)
每个机器宠物有如下成员函数:
带参数的构造函数MachinePets(const string s) ,为机器宠物初始化昵称。
纯虚函数string talk()为机器宠物派生类提供宠物叫声的统一接口。
设计并实现电子宠物猫类PetCats,该类公有继承自MachinePets。每个电子宠物猫类有如下成员函数:
带参数的构造函数PetCats(const string s),为机器宠物猫初始化昵称。
string talk(),返回电子宠物猫叫声。
设计并实现电子宠物狗类PetDogs, 该类公有继承自MachinePets。每个电子宠物狗类有如下成员函数:
带参数的构造函数PetCats(const string s),为机器宠物狗初始化昵称。
string talk(),返回电子宠物狗叫声。
1 #ifndef PET_H 2 #define PET_H 3 #include<string> 4 using namespace std; 5 class MachinePets{ 6 public: 7 MachinePets(const string s="nameless"); 8 virtual string talk()=0; 9 string getNickname(); 10 private: 11 string nickname; 12 }; 13 class PetCats:public MachinePets{ 14 public: 15 PetCats(const string s); 16 string talk(); 17 }; 18 19 class PetDogs:public MachinePets{ 20 public: 21 PetDogs(const string s); 22 string talk(); 23 }; 24 #endif // PET_H_INCLUDED
pet.h
#include <iostream> #include <string> using namespace std; #include "pet.h" #include <stdlib.h> MachinePets::MachinePets(string s/*="nameless"*/):nickname(s){} string MachinePets::getNickname(){ return nickname; } PetCats::PetCats(const string s):MachinePets(s){ } string PetCats::talk(){ return "meow~"; } PetDogs::PetDogs(const string s):MachinePets(s){} string PetDogs::talk(){ return "rao~"; } void play(MachinePets * pet){ cout<<pet->getNickname()<<‘ ‘<<"says"<<‘ ‘<<pet->talk()<<endl; } int main() { PetCats cat("xiro neko"); PetDogs dog("dogmeat"); play(&cat); // 按照play()形参,传递参数 play(&dog); // 按照play()形参,传递参数 return 0; }
main.cpp
rpg游戏---等写完了再补充上面去(咕咕咕)
总结
注意基类中成员函数有无关键字virtual,访问的成员分别是什么。
原文地址:https://www.cnblogs.com/laboratory-X/p/10976986.html
时间: 2024-11-08 18:05:17