C++走向远洋——57(项目二2、动物这样叫、抽象类)
*/
* 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、动物这样叫、抽象类)的更多相关文章
- C++走向远洋——(项目二、存储班长信息的学生类、派生)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- Eclipse+Maven创建webapp项目<二> (转)
Eclipse+Maven创建webapp项目<二> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...
- Vue小项目二手书商城:(四)详情页和购物车(emit、prop、computed)
实现效果: 点击对应商品,对应的商品详情页出现,详情页里面还有“Add to cart”按钮和“×”退出按钮. 点击“Add to cart”可以将商品加入购物车,每件商品只能添加一次,如果把购物车的 ...
- Vue小项目二手书商城:(三)前端渲染数据
实现内容: axios取到的数据在前端使用(父子组件各自应该怎么使用) 一.简单使用(在哪取在哪用) 1.在App.vue中script中加上data(data专属于当前组件,父子组件传参通过prop ...
- Vue小项目二手书商城:(二)axios前后端数据交互
实现内容: 写路由接口(express) axios取数据 一.写接口 1.我们要在前端取到后端的数据(之前写的data.json)可以用vue-resourse或者用axios,在vue2之后官方就 ...
- Vue小项目二手书商城:(一)准备工作、组件和路由
本项目基于vue2.5.2,与低版本部分不同之处会在(五)参考资料中提出 完整程序:https://github.com/M-M-Monica/bukesi 实现内容: 资源准备(mock数据) 组件 ...
- Eclipse+Maven创建webapp项目<二>
Eclipse+Maven创建webapp项目<二> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...
- crm 系统项目(二) admin 后台操作表格
crm 系统项目(二) admin 后台操作表格 1. app下创建 templates 运行的时候 先找全局的templates——> 按照app的注册顺序找templates中的文件 2. ...
- C++学习基础十二——纯虚函数与抽象类
一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...
随机推荐
- py学习笔记1.13、1.14
1.name.title() 首字母大写 name.upper() 全部大写 name.lower() 全部小写 2.+ 合并字符串 3.单引号.双引号都可以表示字符串 4.# 注释 5.索引制定为- ...
- python学习——函数及其参数
函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.严格来说python只有函数,没有过程,人们理解的函数都是带有return的,而过程 ...
- BeagleboneBlack上u-boot的MLO文件是哪里来的
在玩BeagleboneBlack一段时间之后不可避免地接触到了u-boot,之前的玩耍过程大致上是这样的: 在MATLAB下耍,因为MATLAB提供了它的硬件支持,可以直接在命令行与之交互,也可在s ...
- ubuntu 14.04 搜狗拼音安装
打开 Software & Updates,添加软件源: sudo add-apt-repository ppa:fcitx-team/nightly 输入 sudo apt-get inst ...
- Normally Distributed|
6.1Introducing Normally Distributed Variables Why the word “normal”? Because, in the last half of th ...
- Xen入门系列三【Xen 管理工具 xm】
xm命令是管理Xen的最基本的工具,可以通过xm --help 来获得帮助. 1. 列出所有正在运行的虚拟操作系统 # xm list PS[1]:可缩写为 xm li 2. 启动虚拟机 # 通过配置 ...
- iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码
iOS精选源码 对网络进行测速 自实现大标题,配合原生骨架屏demo 简单方便的pickerVIew记录数据 LZPickerView 科技风绘制组件,简单快速"画"出炫酷图案 R ...
- ios 设置UITextField的placeholder大小颜色
需求:产品嫌弃placeholder的字体太大,颜色太明显,要求跟正常输入时的字体及颜色不同 方法:设置placeholder的大小和颜色,实际上是设置placeholder的label的大小和颜色, ...
- C++ List的用法
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() ...
- OpenCV 使用FLANN进行特征点匹配
#include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...