#define _CRT_SECURE_NO_WARNINGS //需要忽略scanf返回值的警告时使用 #include #include using namespace std; class Employee { protected: string name; int beginYear; public: Employee(string value1, int value2) :name(value1), beginYear(value2) {} int getBeginYear(void) { return beginYear; } string getName(void) { return name; } double getBasicWage(int currentYear) { int workYears = currentYear - beginYear + 1; return 60000 + workYears * 1000; } virtual double getPrize(void) = 0; }; class Saleman :public Employee { private: double deductRate; double personAmount; public: Saleman(string value1 = 'CPP', int value2 = 2022, double value3 = 0.1, double value4 = 0.0) : Employee(value1, value2), deductRate(value3), personAmount(value4) {} double getDeductRate(void) { return deductRate; } double getPersonAmount(void) { return personAmount; } virtual double getPrize(void) { return deductRate * personAmount; } }; class Manager :public Employee { private: double totalDeductRate; double totalAmount; public: Manager(string value1 = 'CPP', int value2 = 2022, double value5 = 0.02, double value6 = 0.0) : Employee(value1, value2), totalDeductRate(value5), totalAmount(value6) {} double getTotalDeductRate(void) { return totalDeductRate; } double getTotalAmount(void) { return totalAmount; } virtual double getPrize(void) { return totalDeductRate * totalAmount; } }; int main(void) { string value1; int value2; double value3, value4; scanf('%s%d%lf%lf', &value1[0], &value2, &value3, &value4); Saleman s(value1, value2, value3, value4); scanf('%s%d%lf%lf', &value1[0], &value2, &value3, &value4); Manager m(value1, value2, value3, value4); Employee* e = &s; cout << e->getName() << '2022年的实发工资为' << e->getPrize() + e->getBasicWage(2022) << endl; e = &m; cout << e->getName() << '2022年的实发工资为' << e->getPrize() + e->getBasicWage(2022) << endl; return 0; }

C++ 员工类、销售员类和经理类的继承与多态实现

原文地址: https://www.cveoy.top/t/topic/osKn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录