Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //dest copyCons assign=
- //Oguzhan Ozdemir 21200463
- /*Personal Name: Ahmet
- Personal Number: 1001
- Personal Number of Days: 20
- Personal Daily Pay: 175
- Personal Type: Salesman
- Personal Salary: 3500
- _______________
- Personal Name: Ayse
- Personal Number: 1002
- Personal Number of Days: 22
- Personal Daily Pay: 200
- Personal Type: Technician
- Personal Salary: 4400
- _______________
- Personal Name: Deniz
- Personal Number: 1004
- Personal Number of Days: 20
- Personal Daily Pay: 250
- Personal Type: General Manager
- Personal Salary: 6000
- Manager Salary: 6000
- _______________
- _______________
- Company Needs to pay :13900 TL in total...
- C:\Users\21200463\source\repos\Project5\Debug\Project5.exe (process 11080) exited with code 0.
- Press any key to close this window . . .
- */
- class Personnel {
- char *name;
- int persNo;
- public:
- explicit Personnel(const char *name);
- Personnel(Personnel&);//copy
- virtual ~Personnel();//dest
- Personnel& operator=(const Personnel&);//assign overload
- virtual void out(); //cout
- int getTotal(); //returns the total number of objects in the memory
- virtual int getSalary() = 0;
- };
- int totalObj = 0;
- Personnel::Personnel(const char * name)
- {
- this->name = new char[strlen(name) + 1];
- strcpy(this->name, name);
- persNo = 1000+ getTotal();
- }
- Personnel::Personnel(Personnel & f)
- {
- if (name != nullptr) {
- delete[] name;
- }
- name = new char[strlen(f.name) + 1];
- strcpy(name, f.name);
- persNo = f.persNo;
- }
- Personnel::~Personnel()
- {
- if (name != nullptr) {
- delete[] name;
- }
- }
- Personnel & Personnel::operator=(const Personnel & right)
- {
- // TODO: insert return statement here
- if (&right != this) {
- persNo = right.persNo;
- if (name != NULL)
- delete[]name;
- name = new char[strlen(right.name) + 1];
- strcpy(name, right.name);
- persNo = right.persNo;
- return *this;
- }
- }
- void Personnel::out()
- {
- cout << "Personal Name: " << name << endl;
- cout << "Personal Number: " << persNo << endl;
- }
- int Personnel::getTotal()
- {
- totalObj++;
- return totalObj;
- }
- class Worker: public Personnel {
- int numDays;
- int dailyPay;
- char *type;
- public:
- explicit Worker(const char *name_, int numDays_, int dailyPay_, const char *type_) :Personnel(name_) {
- numDays = numDays_;
- dailyPay = dailyPay_;
- this->type = new char[strlen(name_) + 1];
- strcpy(this->type, type_);
- };
- int getSalary() {
- return numDays * dailyPay;
- }
- void out() {
- Personnel::out(); //????????????????????
- cout << "Personal Number of Days: " << numDays << endl;
- cout << "Personal Daily Pay: " << dailyPay << endl;
- cout << "Personal Type: " << type << endl;
- cout << "Personal Salary: " << getSalary() << endl;
- }
- };
- class Manager : public Personnel, public Worker {
- int premium;
- int numDaysForManager;
- int dailyPayForManager;
- public:
- explicit Manager(const char *name__, int numDays__, int dailyPay__, const char *type__, int premium__) :Worker(name__, numDays__, dailyPay__, type__),Personnel(name__){
- premium = premium__;
- numDaysForManager = numDays__;
- dailyPayForManager = dailyPay__;
- };
- int getSalary() {
- return (numDaysForManager * dailyPayForManager) +premium;
- }
- void out() {
- Worker::out(); //????????????????????
- cout << "Manager Salary: " << getSalary() << endl;
- }
- };
- void main() {
- Worker w1("Ahmet", 20, 175, "Salesman");
- Worker w2("Ayse", 22, 200, "Technician");
- Manager m("Deniz", 20, 250, "General Manager", 1000);
- /*w1.out();
- cout << "_______________\n";
- w2.out();
- cout << "_______________\n";
- m.out();
- cout << "_______________\n";*/
- Personnel *p[3];
- p[0] = &w1;
- p[1] = &w2;
- p[2] = &m;
- int whatToPay = 0;
- for (int i = 0; i < 3; i++)
- {
- p[i]->out();
- cout << "_______________\n";
- whatToPay+= p[i]->getSalary();
- }
- cout << "_______________\n";
- cout << "Company Needs to pay :" << whatToPay << " TL in total...\n\n\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement