*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年5月29日
* 版本号:V1.0
* 问题描述:抽象类
* 程序输入:无
* 程序输出:见运行结果
*/
#include "iostream"
#include<string>
using namespace std;
class Animal
{
public:
virtual void cry() = 0;
}; class Mouse : public Animal
{
private:
string name;
char sex;
public:
Mouse(string nam, char s):name(nam),sex(s) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是一只"<<((sex=='m')?"男":"女")<<"老鼠,我的叫声是:吱吱吱!"<<endl;
}
}; class Cat : public Animal
{
private:
string name;
public:
Cat(string nam):name(nam) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl;
}
}; class Dog : public Animal
{
private:
string name;
public:
Dog(string nam):name(nam) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是一条狗,我的叫声是:汪汪汪!"<<endl;
}
}; class Giraffe : public Animal
{
private:
string name;
char sex;
public:
Giraffe(string nam,char s):name(nam), sex(s) {}
virtual void cry()
{
cout<<"我叫"<<name<<",是"<<((sex=='m')?"男":"女")<<"长颈鹿,我的脖子太长,发不出声音来!"<<endl;
}
}; int main( )
{
Animal *p;
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++走向远洋——57(项目二2、动物这样叫、抽象类)的更多相关文章

  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++学习基础十二——纯虚函数与抽象类

    一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...

随机推荐

  1. Thymeleaf标签学习

    目录 Thymeleaf Thymeleaf的特点 SpringBoot与之整合 Thymeleaf常用语法 变量_变量案列 变量_动静结合 变量_ognl表达式的语法糖 变量_自定义变量 方法 方法 ...

  2. Nginx_安全1

    Nginx 安全 nginx隐藏版本号 # 在Nginx的配置文件中进行修改,增加下面这个. server_tokens on; nginx对IP和目录限速 # Nginx可以通过HTTPLimitZ ...

  3. Sqlite教程(4) Activity

    之前我们已经有了DbHelper.Data Access Object.Configuration. 那麽现在就是由Activity去创建它们,然後就可以存取Sqlite. 架构图表示了它们的关系. ...

  4. 记一次线上“no such file or directory”问题处理

    事件背景描述:项目是基于docker部署,在使用xxl-job的过程中,需要使用XxlJobLogger.log记录日志(非必须),项目定义日志其日志存储位置/home/logs.任务运行后包找不到文 ...

  5. SwaggerConfig

    package me.zhengjie.common.swagger2; import com.google.common.base.Predicates; import org.springfram ...

  6. DateTimePicket jQuery 日期插件,开始时间和结束时间示例

    需要引入的js文件: <input type="text" id="startTime" placeholder="开始时间"/> ...

  7. day27-控制台输出彩色文字

    格式:\033[显示方式;前景色;背景色m 说明:显示方式           意义-------------------------  0             终端默认设置  1         ...

  8. CentOS7部署yum环境及虚拟机快照克隆

    CentOS部署IP地址 第一种:nmtui        方向键.tab.空格.回车第二种:修改网卡配置文件         /etc/sysconfig/network-sripts/ifcfg- ...

  9. 信息检索盛会 微软“领衔主演”——记ACM SIGIR 2013信息检索国际会议

    微软"领衔主演"--记ACM SIGIR 2013信息检索国际会议" title="信息检索盛会 微软"领衔主演"--记ACM SIGIR  ...

  10. 安装Rational Rose启动报错:无法启动此程序,因为计算机中丢失 suite objects.dll。

    运行Rational Rose的时候如果出现这样的错误,先检查环境变量有没有common的地址,如果没有直接配上就OK:配置如下:D:\Program Files\Rational\Common; 我 ...