#include <string>
#include <iostream>
#include <assert.h>
using std::string;
using std::cout;
using std::endl;
class Subject{
public:
virtual string Name() = 0;
};
class Calculus :public Subject {
public:
string Name(){
return "Calculus"; //微积分
}
};
class English :public Subject {
public:
string Name(){
return "English";
}
};
class Algebra :public Subject {
public:
string Name(){
return "Algebra"; //代数
}
};
class Cpp :public Subject {
public:
string Name(){
return "C++ Language";
}
};
class Physics :public Subject {
public:
string Name(){
return "Physics";
}
};
void fillObjects(Subject* o[]) {
//fill Calculus, English, Algebra, C++ Language, Physics
o[0] = new Calculus;
o[1] = new English;
o[2] = new Algebra;
o[3] = new Cpp;
o[4] = new Physics;
}
int main() {
Subject* o[5];
fillObjects(o);
assert(o[0]->Name() == "Calculus");
assert(o[1]->Name() == "English");
assert(o[2]->Name() == "Algebra");
assert(o[3]->Name() == "C++ Language");
assert(o[4]->Name() == "Physics");
cout << "pass!!!" << endl;
for (int i = 0;i < 5;i++)
delete o[i];
return 0;
}