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

📄 615.cpp

📁 C++实训教程
💻 CPP
字号:
//615.CPP  demo polymorphism
#include <iostream.h>
#include <cstring.h>
const int  	MAXPERSON=10;
class	Person
{
 protected:
	string name;
 public:
	Person()
	{	name = "";}
	Person(string  nn)
	{	name = nn;	}
	virtual void dispWho()
	{	cout << "Person\n";}
 };
class Professor :public Person
{
 public:
	Professor():Person() {}
	Professor(string nn) : Person(nn) {}
	virtual void dispWho()
	{cout << "Professor:" << name << endl;}
};

class Student :public Person
{
 public:
	Student():Person() {}
	Student(string nn) : Person(nn) {}
	virtual void dispWho()
	{cout << "Student:" << name << endl;}
};

class Room
{
	unsigned int	maxPerson;
	unsigned int 	numPerson;
	Person ** residents;
 public:
	Room(unsigned int m);
	~Room();
	unsigned int accept(Person * p);
	Person * release(unsigned int n);
	void listPerson();
};

Room::Room(unsigned int max)
{
	maxPerson = max;
	numPerson = 0;
	residents = new Person * [MAXPERSON];
	for (int i = 0; i < MAXPERSON ; i++ )
		residents[i] = NULL;
}
Room::~Room()
{	delete residents;}

unsigned int Room::accept(Person * p)
{
	if( numPerson == MAXPERSON)
		return 0;
	++numPerson;
	int i = 0;
	while (residents[i])
		++i;
	residents[i] = p;
	return i+1;
}

Person * Room::release(unsigned int n)
{
	if( n > MAXPERSON)
		return NULL;
	--n;
	if (residents[n])
	{
		Person * t = residents[n];
		residents[n] = NULL;
		--numPerson;
		return t;
	}
	else
		return NULL;
}

void Room::listPerson()
{
	if(numPerson > 0)
		for (int i = 0; i<MAXPERSON; ++i)
			if(residents[i])
			{
				cout << "Person in : " << (i+1) << " -- ";
				residents[i]->dispWho();
			}
}


main()
{
	Room r(MAXPERSON);
	Professor p1("Ang");Professor p2("Lee");Professor p3("Bao");
	Professor p4("Cao");Professor p5("Feng");
	Student  s1("Pei");Student  s2("Hao");Student  s3("Julie");
	Student  s4("WangHong");Student  s5("Black");
	r.accept(&p1);
	r.accept(&p2);
	unsigned int ns2 = r.accept(&s2);
	r.accept(&p3);
	r.accept(&s1);
	unsigned int np4 = r.accept(&s4);
	r.accept(&p5);
	r.accept(&s5);
	r.accept(&s4);
	r.accept(&s3);
	r.release(ns2);
	r.release(np4);
	r.listPerson();
	return 0;
}
/*
上面程序运行的结果如下:
Person in : 1 -- Professor:Ang
Person in : 2 -- Professor:Lee
Person in : 4 -- Professor:Bao
Person in : 5 -- Student:Pei
Person in : 7 -- Professor:Feng
Person in : 8 -- Student:Black
Person in : 9 -- Student:WangHong
Person in : 10 -- Student:Julie

*/

⌨️ 快捷键说明

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