【c++程序】复杂抽象结构

#include<iostream>
using namespace std;
class Animal
{
public:
	Animal(int);
	virtual ~Animal(){cout<<"析构动物"<<endl;}
	virtual int GetAge(){return itsage;}
	virtual void Sleep()=0;
	virtual void Propagate()=0;
	virtual void Move()=0;
	virtual void Body()=0;
	virtual void Eat()=0;
	virtual void Show()=0;
private:
	int itsage;
};
Animal::Animal(int age):itsage(age)
{
	cout<<"创建动物....."<<endl;
}
class Mammalia:public Animal
{
public:
	Mammalia(int age):Animal(age)
	{
		cout<<"创建哺乳类....."<<endl;
	}
	virtual ~Mammalia()
	{
		cout<<"析构哺乳类...."<<endl;
	}
	virtual void Propagete()
	{
		cout<<"哺乳类是胎生动物,通过胚胎来繁殖后代"<<endl;
	}
};
class Brid:public Animal
{
public:
	Brid(int age):Animal(age)
	{
	   cout<<"创建鸟类...."<<endl;
	}
	virtual ~Brid()
	{
		cout<<"析构鸟类....."<<endl;
	}
	virtual void Sleep()
	{
		cout<<"鸟类喜欢站着睡觉...."<<endl;
	}
	virtual void Eat()
	{
		cout<<"极个别动物喜欢吃肉,其他喜欢吃素...."<<endl;
	}
	virtual void Propagate()
	{
		cout<<"鸟类是卵生动物,通过排卵繁殖...."<<endl;
	}
	virtual void Move()
	{
		cout<<"鸟类可以飞...."<<endl;
	}
	virtual void Body()
	{
		cout<<"鸟类体表背赋羽毛...."<<endl;
	}
	virtual void Show()
	{
		cout<<"鸟类一般寿命"<<GetAge()<<endl;
	}
};
class Human:public Mammalia
{
public:
	Human(int age):Mammalia(age)
	{
		cout<<"创建人类...."<<endl;
	}
	virtual ~Human()
	{
		cout<<"析构人类..."<<endl;
	}
	virtual void Sleep()
	{
		cout<<"人类在床上睡觉...."<<endl;
	}
	virtual void Eat()
	{
		cout<<"大多数人不吃生食...."<<endl;
	}
	virtual void Propagate()
	{
		cout<<"人类通过胚胎繁殖...."<<endl;
	}
	virtual void Move()
	{
		cout<<"人类可以走...."<<endl;
	}
	virtual void Body()
	{
		cout<<"人类体表无毛...."<<endl;
	}
	virtual void Show()
	{
		cout<<"人类一般寿命"<<GetAge()<<endl;
	}
};
class Pig:public Mammalia
{
public:
	Pig(int age):Mammalia(age)
	{
		cout<<"创建猪类...."<<endl;
	}
	virtual ~Pig()
	{
		cout<<"析构猪类..."<<endl;
	}
	virtual void Sleep()
	{
		cout<<"猪类喜欢在烂泥中躺着睡觉...."<<endl;
	}
	virtual void Eat()
	{
		cout<<"猪是杂食动物...."<<endl;
	}
	virtual void Propagate()
	{
		cout<<"猪也通过胚胎繁殖...."<<endl;
	}
	virtual void Move()
	{
		cout<<"猪四条腿走路...."<<endl;
	}
	virtual void Body()
	{
		cout<<"猪体表被毛...."<<endl;
	}
	virtual void Show()
	{
		cout<<"猪因为要被人宰了吃,所以寿命为"<<GetAge()<<endl;
	}
};
int main()
{
	Animal *p=0;
	int choice=0;
	bool quit=false;
	while(choice<4)
	{
		cout<<"1-猪类2-人类3-鸟类0-退出"<<endl;
		cin>>choice;
		switch(choice)
		{
		case 1:p=new Pig(1);
			break;
		case 2:p=new Human(80);
			break;
		case 3:p=new Brid(50);
			break;
		default:quit=true;
			break;
		}
		if(quit)
		{
			break;
		}
		p->Show();
		p->Eat();
		p->Propagate();
		p->Move();
		p->Sleep();
		p->Body();
		cout<<endl;
		delete p;
	}
}

时间: 2024-10-19 07:01:27

【c++程序】复杂抽象结构的相关文章

【黑马程序员】————结构体

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.什么是结构体 数组:只能由多个相同类型的数据构成 结构体:可以由多个不同类型的数据构成 二.结构体的定义 1.定义形式 结构体内部的元素,也就是组成成分,我们一般称为"成员". 结构体的一般定义形式为: 1 struct 结构体名{ //struct是关键字,是结构体类型的标志 2 3 类型名1 成员名1; 4 5 类型名2 成员名2; 6 7 …… 8 9 类型名n 成员名n;

Flask程序的基本结构

了解flask程序的基本结构,完成第一个flask程序的运行所有的flask程序都需要一个实例程序,web服务器使用了一种名为web服务器网关接口(WGSI)的协议,把接收客户端的请求都交给这个实例去处理from flask import Flaskapp=Flask(__name__)构造函数里面只有一个必须选用的参数的名字是主模块或者包的名字,一般情况下,__name__这个就是其所需要的值,其实就是为了查找其根目录,目的就是寻找根目录之下的资源文件的位置,以后会有更复杂的初始化方式 路由和

字符串的格式化、程序的分支结构

一.字符串的格式化 1.字符串通过format()方法进行格式化处理. 2.format()方法格式控制 3.左对齐.右对齐.居中 >>> s = 'PYTHON' #左对齐 >>> '{:30}'.format(s) 'PYTHON ' #右对齐 >>> '{:>30}'.format(s) '                             PYTHON' #居中且使用*填充 >>> '{:*^30}'.format

C语言程序的基本结构

目录 一.C语言基础知识的学习方法 二.C语言程序开发的流程 三.安装C语言的编译器 四.C程序的基本结构 1.程序的注释 2.预处理指令 3.主函数的入口 4.主函数体 五.编译并执行 C 程序 六.知识总结 七.课后作业 八.版权声明 一.C语言基础知识的学习方法 1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识.课程中没有提到的知识可以了解一下,但不必深入学习,意义不大. 2)学习不要贪快,欲速则不达的道理大家应该明白,学习的重点是培养写程序的感觉. 3

st_vio——进程间通信接口抽象结构体

工作忙,学习忙,但还是得随便写点. st_vio,顾名思义,应该是指virtual IO,即虚拟IO.根据代码里的注释,这个是一个高度抽象的进程间通信接口结构体,mysql中,如果不是用C++类来抽象,那么就是用含函数指针的结构体来抽象,这也是C语言最常用的习惯. struct st_vio { my_socket sd; /* my_socket - real or imaginary套接字 */ HANDLE hPipe/* 看风格应该只用于Windows系统 */; my_bool loc

第六章 程序设计基础 循环结构

循环结构的程序设计 第一部分:     总结 1.构成循环结构的三种循环语句为: Switch语句.do_switch语句.for语句.一般,用某种循环语句写的程序段,也能用另外两种循环语句实现. 2. switch语句和for语句属于当型循环(先判断,后执行),而do_switch语句则属于直到型循环(先执行,后判断). 3.for语句多用于循环次数明显的问题,而无法确定循环次数的问题采用while语句或do_while语句比较自然. 4.for语句的三个表达式有多种的变化. 5.break使

黑马程序员-关于结构体

------- IOS培训.android培训.java培训.期待与您交流! ---------- 1 结构体: 作用:可以由多个不同类型的数据构成. //定义结构体类型,类型为person:(此阶段不会分配存储空间 1 struct person 2 { 3 变量; // 称为结构体变量或属性 4 } 5 //根据结构体类型person,定义结构体变量,变量名为p(此阶段分配存储空间) 6 struct person p={ }; // 赋值的时候只能在定义结构体的时候同时赋值 错误写法 st

Win32应用程序的基本结构

0 引言 Win32 API是用于创建 Windows 应用程序的应用程序编程接口.通常情况下,一个Win32应用包含一下几个部分: 1)    应用程序入口: 2)    注册窗口类: 3)    创建窗口: 4)    显示窗口: 5)    更新窗口 6)    消息循环: 7)    派发消息: 1 应用程序入口 Win32应用程序以WinMain函数作为程序入口,函数原型如下: int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInsta

程序设计模式 —— 抽象工厂模式

前言 工厂?意思是创建变量的厂子?要这个干什么?为什么不直接new new new!! 定义:为创建一组相关或相互依赖的对象提供一个接口,而无需指定他们的具体类. 但是,从现在开始,请不要再使用new. “What?不使用new?你怎么写C++程序,怎么写Java程序?” 我应该如何阅读? 本文将使用优雅的文字风格来告诉你什么是工厂模式. 注意: 1.在阅读本文之前请保证你已经掌控了 面对对象的思想与 多态的基本概念,否则将难以理解. 2.本文实现将用C++实现,你不一定必须学会C++,这些代码