⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 动物运动会.cpp

📁 设计模式:工厂模式、单例模式的基本实现
💻 CPP
字号:
#include <string>
#include <iostream>
using namespace std;

class Animal
{
protected:
	string name;
	int shoutNum;
	virtual string getShoutSound()=0;
public:
	Animal(string name)
	{
		this->name = name;
		shoutNum = 3;
	}
	Animal()
	{
		name = "无名";
		shoutNum = 3;
	}
	void setName(string name)
	{
		this->name = name;
	}
	void setShoutNum(int shoutNum)
	{
		this->shoutNum = shoutNum;
	}
	void Shout()
	{
		string shout;
		for(int i=0; i<shoutNum; i++)
		{
			shout += getShoutSound();
		}

		cout << "我叫" << name << shout << endl;
	}
};



class Cat: public Animal
{
public:
	Cat(string name): Animal(name)
	{
	}
	Cat(): Animal()
	{
	}
protected:
	string getShoutSound()
	{
		return " 喵";
	}
};

class Monkey: public Animal
{
public:
	Monkey(string name): Animal(name)
	{
	}
	Monkey(): Animal()
	{
	}
protected:
	string getShoutSound()
	{
		return " 吱";
	}
};

class IChangeThing
{
public:
	virtual void ChangeThing(string thing)=0;
	virtual ~IChangeThing(){}
};


class MachineCat: public Cat, public IChangeThing
{
public:
	MachineCat(): Cat()
	{
	
	}
	MachineCat(string name): Cat(name)
	{}
	void ChangeThing( string thing )
	{
		Shout();
		cout << " 我会使用口袋变东西, 变出" << thing << endl;
	}
};


class StoneMonkey: public Monkey, public IChangeThing
{
public:
	StoneMonkey(): Monkey()
	{}
	StoneMonkey(string name): Monkey(name)
	{}
	void ChangeThing( string thing )
	{
		Shout();
		cout << " 我会使用猴毛变东西, 变出" << thing << endl;
	}
};




int main()
{
	IChangeThing *array[2];

	array[0] = new MachineCat("叮当");
	array[1] = new StoneMonkey("孙悟空");
	
	array[0]->ChangeThing("任意门");
	array[1]->ChangeThing("牛魔王");

	delete array[0];
	delete array[1];


//	MachineCat *mcat = new MachineCat("叮当");

//	StoneMonkey *smonkey = new StoneMonkey("孙悟空");


//	mcat->ChangeThing("任意门");
//	smonkey->ChangeThing("牛魔王");


	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -