第13周项目2-动物怎么叫(改)
2016-05-31 18:58
387 查看
/* *Copyright(C) 2016,计算机与控制工程学院 *All rights reserved. *文件名:zhang.cpp *作者:张志新 *完成日期:2016年5月31日 *版本号:v1.0 *问题描述:动物怎么叫 */ #include <iostream> #include <Cmath> using namespace std; class Animal { public: virtual void cry()=0;//定义纯虚函数,在基类里不实现 // { // cout<<"不知哪种动物,让我如何学叫?"<<endl; // } }; class Mouse:public Animal { private: string name; char sex; public: Mouse(string na,char se):name(na),sex(se){} void cry() { cout<<"我叫"<<name<<",是一只"<<((sex=='m')?"男":"女")<<"老鼠,我的叫声是:吱吱吱!"<<endl; } }; class Cat:public Animal { private: string name; public: Cat(string na):name(na){} void cry()//在派生的函数中不用写vritual了 { cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl; } }; class Dog : public Animal { private: string name; public: Dog(string na):name(na){} void cry() { cout<<"我叫"<<name<<",是一条狗,我的叫声是:汪汪汪!"<<endl; } }; class Giraffe : public Animal { private: string name; char sex; public: Giraffe(string na,char se):name(na),sex(se){} void cry() { cout<<"我叫"<<name<<",是"<<((sex=='m')?"男":"女")<<"长颈鹿,我的脖子太长,发不出声音来!"<<endl;//(sex=='m')?"男":"女"是判断sex的语句 } } ; int main( ) { Animal *p; //p = new Animal();//分配动态空间 //p->cry(); Mouse m1("Jerry",'m'); p=&m1;//把地址赋给p 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; }
学习心得:
这个程序是就上一个程序的改进,把虚函数改成了纯虚函数(即为改为了抽象类),1.为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2.在很多情况下,基类本身生成对象是不合情理的。在用了纯虚函数就不在需要声明动态内存。
相关文章推荐
- Redis系列(1)---Redis的介绍和安装
- jQuery-AJAX
- 仓储(Repository)模式 ( 一 )
- 一线架构师实践指南阅读体会_ADMEMS方法体系理解(转)
- cmd markdown
- 靠谱iOS开发满足的条件
- 打造超精简绿色 迅雷 和 IDM附详细教程:
- 如何用Jmeter录制手机app脚本
- 第十三周项目3:动物这样叫(2)
- 简单记录下Java web 中的中文编码问题
- easyui datagridfilter插件的用法
- 1282 - Leading and Trailing ---LightOj1282(快速幂 + 数学)
- 远程服务器返回了意外响应: (413) Request Entity Too Large
- 简单的网站项目开发流程 .
- hibernate使用注解
- android中异步任务AsyncTask的应用和工作原理
- android学习笔记--activity生命周期
- hdoj 2087 剪花布条 【字符串】
- 华为机试---数据分类处理
- Oracel给字段设置索引