第十四周--项目1-Animal

本文通过具体的C++代码示例介绍了多态性的概念及其应用。通过基类指针调用派生类的方法,展示了如何实现不同动物发出声音的行为。代码中包括了抽象基类Animal及其实现派生类Mouse、Cat、Dog和Giraffe。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*    

* 程序的版权和版本声明部分    

* Copyright (c)2013, 烟台大学计算机学院学生    

* All rightsreserved    

* 文件名称:score.cpp    

* 作 者:赵兰     

* 完成日期: 2013年 6月11 日    

* 版本号: v1.0    

* 输入描述:略    

* 问题描述:根据给出的基类Animal和main()函数  

* 输出:如下    

*/     

  

// aaa.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include<string>
using namespace std;
class Animal     //声明抽象基类Animal
{
public:
  virtual void cry()const=0;   //纯虚函数
};
class Mouse:public Animal  //Mouse是Animal的公用派生类
{
public:
 Mouse(string n,char s):name(n),sex(s){}//定义一个有参的构造函数,用参数的初始化表对数据成员初始化
    void AnimalName(){cout<<"Mouse ";}
 void cry()const{cout<<"我是小老鼠我的名字叫"<<name<<"我的性别是"<<sex<<"我的叫声是吱吱吱"<<endl;}
protected:
 string name;
 char sex;
};
class Cat:public Animal  //Cat是Animal的公用派生类
{
public:
 Cat(string n):name(n){}
 void AnimalName(){cout<<"Cat   ";}
 void cry()const{cout<<"我是小猫我的名字叫"<<name<<"我的叫声是“喵喵喵”";}   
protected:
string name;
};
class Dog:public Animal  
{
public:
Dog(string n):name(n){}
void AnimalName(){cout<<"Dog   ";}
void cry()const{cout<<"我是小狗我的名字叫"<<name<<"我的叫声是“汪汪汪”";}   
protected:  
 string name;
};
class Giraffe :public Animal  
{
public:
Giraffe(string n, char s):name (n),sex(s){}  
void AnimalName(){cout<<"Mouse   ";}  
void cry()const{cout<<"我是长颈鹿我的名字叫"<<name<<"我的性别是" <<sex<<"我是小哑巴";}   
protected:  
string  name; char sex; 
};
int main( )
{
    Animal *p;
    //p = new Animal();
    //p->cry(); 
    Mouse m1("Jerry",'m'); 
    p=&m1;
    p->cry(); 
    Mouse m2("Jemmy",'f');
    p=&m2;
    p->cry(); 
    Cat c1("Tom");
    p=&c1;
    p->cry(); 
    Dog d1("Droopy");
    p=&d1;
    p->cry(); 
    Giraffe g1("Gill",'m');
    p=&g1;
    p->cry(); 
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值