/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:由坐标点类派生出直线类。
* 作 者: 雷恒鑫
* 完成日期: 2012 年 05月11 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
任务2.1
#include "iostream"
#include<string>
using namespace std;
class Animal
{
public:
virtual void cry() {cout<<"不知哪种动物,让我如何学叫?"<<endl;}
};
class Mouse :public Animal
{
public:
void cry() {cout<<"我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!"<<endl;}
Mouse(string Mouse_name);
private:
string Mouse_name;
};
class Cat :public Animal
{
public:
void cry() {cout<<"我叫Tom,是一只猫,我的叫声是:喵喵喵!"<<endl;}
Cat(string Cat_name);
private:
string Cat_name;
};
class Dog :public Animal
{
public:
void cry() {cout<<"我叫Droopy,是一条狗,我的叫声是:汪汪汪!"<<endl;}
Dog(string Dog_name);
private:
string Dog_name;
};
class Giraffe :public Animal
{
public:
void cry() {cout<<"我叫Gill,是长颈鹿,脖子太长,发不出声音来!"<<endl;}
Giraffe(string Giraffe_name);
private:
string Giraffe_name;
};
Mouse::Mouse(string Mouse_name)
{
this->Mouse_name=Mouse_name;
}
Cat::Cat(string Cat_name)
{
(*this).Cat_name=Cat_name;
}
Dog::Dog(string Dog_name)
{
this->Dog_name=Dog_name;
}
Giraffe::Giraffe(string Giraffe_name)
{
this->Giraffe_name=Giraffe_name;
}
int main( )
{
Animal *p;
p = new Animal(); p->cry(); //输出: 不知哪种动物,让我如何学叫?(问题出自此处)
Mouse m("Jerry"); p=&m; p->cry(); //输出: 我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!
Cat c("Tom"); p=&c; p->cry(); //输出: 我叫Tom,是一只猫,我的叫声是:喵喵喵!
Dog d("Droopy"); p=&d; p->cry(); //输出: 我叫Droopy,是一条狗,我的叫声是:汪汪汪!
Giraffe g("Gill"); p=&g; p->cry(); //输出: 我叫Gill,是长颈鹿,脖子太长,发不出声音来!
//delete p;
system("pause");
return 0;
}
运行结果:
疑问:
为什么上面主函数里加上delete p不对呢???
任务2.2
#include "iostream"
#include<string>
using namespace std;
class Animal
{
public:
virtual void cry() = 0;
};
class Mouse :public Animal
{
public:
void cry() {cout<<"我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!"<<endl;}
Mouse(string Mouse_name);
private:
string Mouse_name;
};
class Cat :public Animal
{
public:
void cry() {cout<<"我叫Tom,是一只猫,我的叫声是:喵喵喵!"<<endl;}
Cat(string Cat_name);
private:
string Cat_name;
};
class Dog :public Animal
{
public:
void cry() {cout<<"我叫Droopy,是一条狗,我的叫声是:汪汪汪!"<<endl;}
Dog(string Dog_name);
private:
string Dog_name;
};
class Giraffe :public Animal
{
public:
void cry() {cout<<"我叫Gill,是长颈鹿,脖子太长,发不出声音来!"<<endl;}
Giraffe(string Giraffe_name);
private:
string Giraffe_name;
};
Mouse::Mouse(string Mouse_name)
{
this->Mouse_name=Mouse_name;
}
Cat::Cat(string Cat_name)
{
(*this).Cat_name=Cat_name;
}
Dog::Dog(string Dog_name)
{
this->Dog_name=Dog_name;
}
Giraffe::Giraffe(string Giraffe_name)
{
this->Giraffe_name=Giraffe_name;
}
int main( )
{
Animal *p;
//p = new Animal(); p->cry(); //输出: 不知哪种动物,让我如何学叫?(问题出自此处)
Mouse m("Jerry"); p=&m; p->cry(); //输出: 我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!
Cat c("Tom"); p=&c; p->cry(); //输出: 我叫Tom,是一只猫,我的叫声是:喵喵喵!
Dog d("Droopy"); p=&d; p->cry(); //输出: 我叫Droopy,是一条狗,我的叫声是:汪汪汪!
Giraffe g("Gill"); p=&g; p->cry(); //输出: 我叫Gill,是长颈鹿,脖子太长,发不出声音来!
//delete p;
system("pause");
return 0;
}
运行结果:
任务2.3:
#include "iostream"
#include<string>
using namespace std;
class Animal
{
public:
virtual void cry() = 0;
Animal(string Animal_name);
private:
string Animal_name;
};
class Mouse :public Animal
{
public:
void cry() {cout<<"我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!"<<endl;}
Mouse(string Mouse_name);
};
class Cat :public Animal
{
public:
void cry() {cout<<"我叫Tom,是一只猫,我的叫声是:喵喵喵!"<<endl;}
Cat(string Cat_name);
};
class Dog :public Animal
{
public:
void cry() {cout<<"我叫Droopy,是一条狗,我的叫声是:汪汪汪!"<<endl;}
Dog(string Dog_name);
};
class Giraffe :public Animal
{
public:
void cry() {cout<<"我叫Gill,是长颈鹿,脖子太长,发不出声音来!"<<endl;}
Giraffe(string Giraffe_name);
};
Animal::Animal(string Animal_name)
{
this->Animal_name=Animal_name;
}
Mouse::Mouse(string Mouse_name):Animal(Mouse_name){}
Cat::Cat(string Cat_name):Animal(Cat_name){}
Dog::Dog(string Dog_name):Animal(Dog_name){}
Giraffe::Giraffe(string Giraffe_name):Animal(Giraffe_name){}
int main( )
{
Animal *p;
//p = new Animal(); p->cry(); //输出: 不知哪种动物,让我如何学叫?(问题出自此处)
Mouse m("Jerry"); p=&m; p->cry(); //输出: 我叫Jerry,是一只老鼠,我的叫声是:吱吱吱!
Cat c("Tom"); p=&c; p->cry(); //输出: 我叫Tom,是一只猫,我的叫声是:喵喵喵!
Dog d("Droopy"); p=&d; p->cry(); //输出: 我叫Droopy,是一条狗,我的叫声是:汪汪汪!
Giraffe g("Gill"); p=&g; p->cry(); //输出: 我叫Gill,是长颈鹿,脖子太长,发不出声音来!
//delete p;
system("pause");
return 0;
}
运行结果:
分享到:
相关推荐
1、 一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。...
这次实验要求建立一个关系数据库信息管理系 统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试的一 般过程,为我们的毕业设计打下基础。 为了更好的巩固和加强书本所学的知识,并把所学的...
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 虽然结构化程序设计方法具有很多的优点,...
bsu-famcs-cs-solutions 我在白俄罗斯国立大学CS课程的解决方案。 第四学期:算法和数据结构( ) 第4学期:练习(老师: ) 第三学期:编程(老师: ) —多项式容器类+ WinAPI接口 ... 第一天:任务1 ,任务2 -W
1131抽象类、 参数对象类、型与实现对象类 1132接口 1133版型 114组件、 包和结点 1141组件 1142包和包图 1143结点 115习题 第12章面向对象的软件开发过程 121RUP概述 1211RUP的历史 1212...
B) 图形工具能够极好地概括描述一个系统的信息,比文字叙述能够更好地表达重 要的细节 C) 图形能够更加直观地描述目标系统,便于用户理解和交流,有利于开发者与用 户之间达成一致的需求 D) 图形比文字描述简单、...
当TCP发送第一个SYN报文段时,显然无法利用教材中5.6.3节所介绍的方法计算往返时间RTT。那么这时TCP又怎样设置重传计时器呢? 问题5-12:糊涂窗口综合症产生的条件是什么?是否只有在接收方才产生这种症状? 问题5-...
问题6-5:在一个互连网中,能否使用一个很大的交换机(switch)来代替互连网中很多的路由器? 问题6-6:为什么IP地址又称为“虚拟地址”? 问题6-7:有的文献上使用“虚拟分组”(virtual packet)这一名词。虚拟分组是...
(四)面向对象编程14学时 (1)面向对象的意义2学时 (2)继承与多态4学时 (3)抽象类4学时 (4)接口4学时 教学要求:掌握面向对象编程的意义,面向对象编程的方法,掌握抽象类、接口的定义与使用。 (五)C#...
1.2 第一个驱动程序HelloDDK的代码分析 1.2.1 HelloDDK的头文件 1.2.2 HelloDDK的入口函数 1.2.3 创建设备例程 1.2.4 卸载驱动例程 1.2.5 默认派遣例程 1.3 HelloDDK的编译和安装 1.3.1 用...
1.2 第一个驱动程序HelloDDK的代码分析 1.2.1 HelloDDK的头文件 1.2.2 HelloDDK的入口函数 1.2.3 创建设备例程 1.2.4 卸载驱动例程 1.2.5 默认派遣例程 1.3 HelloDDK的编译和安装 1.3.1 用...
在微型机汉字系统中,一般一个汉字的机内码占的字节数为(2)个。 多媒体硬件的主要接口卡包括:(显卡)、(声卡)和(视频卡)。 一幅彩色图图像的像元是由(红绿蓝)3种颜色组成的。 (数制)是指用一组固定的...