📄 615.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 + -