1、名词实际上就是对象(员工派生出老员工、新员工)
2、利用虚函数实现多态
3、对象指针数组
头文件
#include <string>
#include <istream>
using namespace std;
class Emplyee{
protected:
string Name;
int Years;
public:
virtual int getSalary() =0;
Emplyee(string name, int years)
:Name(name), Years(years) //<strong><span style="color:#ff0000;">初始化列表</span></strong>
{};
};
class Old_Emplyee :public Emplyee{
public:
Old_Emplyee(string name, int years)
:Emplyee(name, years) //<strong><span style="color:#ff0000;">使用基类的构造函数,完成对属性的初始化</span></strong>
{};
int getSalary(){
return 2000 * Years;
};
};
class Young_Emplyee :public Emplyee{
public:
Young_Emplyee(string name, int years)
:Emplyee(name, years)
{};
int getSalary(){
return 200 * Years;
};
};
class Salary_Manager{
private:
int Max_Num=3;
Emplyee* pEmplyee[];
public:
void InputInfo();
void ShowInfo();
double AveSalary();
};
源文件:
#include "Salary_Manager.h"
#include <iostream>
#include <Windows.h>
using namespace std;
void Salary_Manager::InputInfo(){
cout << "信息输入:" << endl;
int c_Num = 0;
string strName ="";
int iYears=0;
bool isOld=0;
while (c_Num < Max_Num)
{
cin.clear();
cin>>isOld>>strName>>iYears;
Emplyee* tpEmplyee = NULL;
if (isOld == true){
tpEmplyee = new Old_Emplyee(strName,iYears);
pEmplyee[c_Num] = tpEmplyee;
}else{
tpEmplyee = new Young_Emplyee(strName, iYears);
pEmplyee[c_Num] = tpEmplyee;
}
c_Num++;
}
};
double Salary_Manager::AveSalary(){
int total_Salary = 0;
for (size_t i = 0; i < Max_Num; i++)
{
total_Salary += pEmplyee[i]->getSalary();
}
return total_Salary / Max_Num;
};
int main(){
Salary_Manager mSalary_Manager;
mSalary_Manager.InputInfo();
cout<<"平均工资为:"<<mSalary_Manager.AveSalary()<<endl;
system("PAUSE");
}
运行结果: