zoukankan      html  css  js  c++  java
  • 实验五--类的继承派生多态二次练习

    实验目的
    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,访问的成员分别是什么。

  • 相关阅读:
    ajax语法结构
    数据传输编码模式的解析
    choice参数与MTV和MVC
    only和defer与select_related和prefetch_Related(面试重点)
    聚合查询、分组查询、 F与Q查询
    多表查询
    单表查询
    模板的继承和导入
    模板语法的传值和取值
    IOC依赖注入简单实例
  • 原文地址:https://www.cnblogs.com/laboratory-X/p/10976986.html
Copyright © 2011-2022 走看看