Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <clocale>
- using namespace std;
- class Base {
- public:
- virtual void show() = 0;
- virtual ~Base() {}
- };
- class Person: public Base {
- char * name;
- char * EGN;
- public:
- Person(const char* nme, const char* egn) {
- int n = strlen(nme)+1;
- name = new char[n];
- strcpy_s(name,n,nme);
- n = strlen(egn)+1;
- EGN = new char[n];
- strcpy_s(EGN,n,egn);
- }
- ~Person() { delete [] name; delete [] EGN; }
- void show() {
- cout<< name << ", EGN:" << EGN << endl;
- }
- };
- class Student: public Base {
- Base & obj;
- char * vuz;
- unsigned FNO;
- public:
- Student(Base& obj, const char* uz, unsigned FNO): obj(obj), FNO(FNO) {
- int n = strlen(uz)+1;
- vuz = new char[n];
- strcpy_s(vuz,n,uz);
- }
- void show() {
- obj.show();
- cout <<"\tStudent at " << vuz <<", F#"<< FNO << endl;
- }
- ~Student(){ delete [] vuz; }
- };
- class Employee: public Base {
- Base& obj;
- char * job;
- unsigned ENO;
- public:
- Employee( Base& obj, const char * jb, unsigned ENO ): obj(obj), ENO(ENO) {
- int n = strlen(jb)+1;
- job = new char[n];
- strcpy_s(job,n,jb);
- }
- ~Employee(){ delete [] job; }
- void show() {
- obj.show();
- cout <<"\tEmployed at "<<job<<", S#"<<ENO<<endl;
- }
- };
- int main() {
- setlocale(0,"");
- Base& a = Person( "Иван Петров", "9012345678"),
- & b = Student(a, "НБУ", 651234 ),
- & c = Employee(b, "Мусала Софт ООД",5678),
- & d = Employee(c, "Сухи пасти ЕООД", 523);
- a.show();
- b.show();
- c.show();
- d.show();
- system("PAUSE");
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment