*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年5月29日
* 版本号:V1.0
* 问题描述:每一个Animal的派生类都有一个“名字”数据成员,这一共有的成员完全可以由基类提供改造上面的程序,将这一数据成员作为抽象类Animal数据成员被各派生类使用。
* 程序输入:无
* 程序输出:见运行结果
*/
#include "iostream"
#include<string>
using namespace std;
class Animal
{
protected:
string name;
public:
Animal(string nam):name(nam){}
virtual void cry() = 0;
}; class Mouse : public Animal
{
private:
char sex;
public:
Mouse(string nam, char s):Animal(nam),sex(s) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是一只"<<((sex=='m')?"男":"女")<<"老鼠,我的叫声是:吱吱吱!"<<endl;
}
}; class Cat : public Animal
{
public:
Cat(string nam):Animal(nam) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl;
}
}; class Dog : public Animal
{
public:
Dog(string nam):Animal(nam) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是一条狗,我的叫声是:汪汪汪!"<<endl;
}
}; class Giraffe : public Animal
{
private:
char sex;
public:
Giraffe(string nam,char s):Animal(nam), sex(s) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是"<<((sex=='m')?"男":"女")<<"长颈鹿,我的脖子太长,发不出声音来!"<<endl;
}
}; int main( )
{
Animal *p;
// p = new Animal();
// p->cry(); //输出: 不知哪种动物,让我如何学叫?
Mouse m1("Jerry",'m');
p=&m1;
p->cry(); //输出: 我叫Jerry,是一只男老鼠,我的叫声是:吱吱吱!
Mouse m2("Jemmy",'f');
p=&m2;
p->cry(); //输出: 我叫Jemmy,是一只女老鼠,我的叫声是:吱吱吱!
Cat c1("Tom");
p=&c1;
p->cry(); //输出: 我叫Tom,是一只猫猫,我的叫声是:喵喵喵!
Dog d1("Droopy");
p=&d1;
p->cry(); //输出: 我叫Droopy,是一条狗狗,我的叫声是:汪汪汪!
Giraffe g1("Gill",'m');
p=&g1;
p->cry(); //输出: 我叫Gill,是男长颈鹿,脖子太长,发不出声音来!
return 0;
}

运行结果:

C++走向远洋——58(项目二3、动物这样叫、改进版)的更多相关文章

  1. C++走向远洋——(项目二、存储班长信息的学生类、派生)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  2. Eclipse+Maven创建webapp项目<二> (转)

    Eclipse+Maven创建webapp项目<二> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...

  3. Vue小项目二手书商城:(四)详情页和购物车(emit、prop、computed)

    实现效果: 点击对应商品,对应的商品详情页出现,详情页里面还有“Add to cart”按钮和“×”退出按钮. 点击“Add to cart”可以将商品加入购物车,每件商品只能添加一次,如果把购物车的 ...

  4. Vue小项目二手书商城:(三)前端渲染数据

    实现内容: axios取到的数据在前端使用(父子组件各自应该怎么使用) 一.简单使用(在哪取在哪用) 1.在App.vue中script中加上data(data专属于当前组件,父子组件传参通过prop ...

  5. Vue小项目二手书商城:(二)axios前后端数据交互

    实现内容: 写路由接口(express) axios取数据 一.写接口 1.我们要在前端取到后端的数据(之前写的data.json)可以用vue-resourse或者用axios,在vue2之后官方就 ...

  6. Vue小项目二手书商城:(一)准备工作、组件和路由

    本项目基于vue2.5.2,与低版本部分不同之处会在(五)参考资料中提出 完整程序:https://github.com/M-M-Monica/bukesi 实现内容: 资源准备(mock数据) 组件 ...

  7. Eclipse+Maven创建webapp项目<二>

    Eclipse+Maven创建webapp项目<二> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...

  8. crm 系统项目(二) admin 后台操作表格

    crm 系统项目(二) admin 后台操作表格 1. app下创建 templates  运行的时候 先找全局的templates——> 按照app的注册顺序找templates中的文件 2. ...

  9. C++走向远洋——56(项目二1、动物这样叫、虚函数)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

随机推荐

  1. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:TensorFlow图像处理函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt #读取图片 image_raw_data = tf ...

  2. python+selenium自动化--参数化(paramunittest)

    unnittest的参数化模块-paramunittest paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 两种用法 import unit ...

  3. 爬虫笔记(十一)——认识cookie

    什么是cookie? 在爬虫的使用中,如果涉及登录等操作时,经常会使用到cookie.简单的来说,我们访问每一个互联网页面,都是通过HTTP协议进行的,而HTTP协议是一个无状态协议,所谓的无状态协议 ...

  4. ModelSerializer补充及ListSerializer

    整体单改 路由层.模型层.序列化层不需要做修改,只需要处理视图层:views.py """ 1) 单整体改,说明前台要提供修改的数据,那么数据就需要校验,校验的数据应该在 ...

  5. CodeForces 527C. Glass Carving (SBT,线段树,set,最长连续0)

    原题地址:http://codeforces.com/problemset/problem/527/C Examples input H V V V output input H V V H V ou ...

  6. Jmeter连接Mysql出现Cannot create PoolableConnectionFactory (Could not create connection to database server.)错误

    0 环境 系统环境:win10 1 正文 一般是数据库的驱动包版本不匹配(我是直接放在jmeter/lib下的) 当然有时候需要添加?useUnicode=true&characterEnco ...

  7. 20)PHP,数组的遍历

    然后开始使用这2个函数和while循环结构来实现数组遍历: 形式: reset($arr1); while ( list ($key, $value ) = each( $arr1) ) //从数组$ ...

  8. 53)PHP,类的继承

    详见   视频第十七天  中的第二节 类的继承 所以   类之间的继承就是一种新的关系的建立,并不是将父类的东西重新复制给子类--------------------- 当你实例化一个类的时候,调用它 ...

  9. PAT甲级——1027 Colors in Mars

    1027 Colors in Mars People in Mars represent the colors in their computers in a similar way as the E ...

  10. 用windows下的Anaconda搭建Django虚拟环境

    Django 是一个Python定制框架,可用于简便.快速的开发数据库驱动的web站点. 要使用Django,首先要建立一个虚拟工作环境. 那么,为什么要搭建虚拟环境呢?我们来看以下的开发场景: 假设 ...