#include<iostream>
#include<string>
using namespace std;
class PEOPLE
{
public:
PEOPLE()
{
ID=0;
name="";
age=0;
}
PEOPLE(int id,string strname,int iage)
{
ID=id;
name=strname;
age=iage;
}
~PEOPLE(){}
virtual void getselary()=0;
virtual void changename(string name)=0;
virtual void show()=0;
virtual int getworkyears()=0;
protected:
int ID;
string name;
int age;
};
class WORKER:public PEOPLE
{
int workyears;
double salary;
public:
WORKER()
{
cout<<"无形参构造函数被调用"<<endl;
}
WORKER(int id,string name,int iage,int workeryear,double salarys):PEOPLE(id,name,iage)
{
workyears=workeryear;
salary=salarys;
cout<<" 有形参函数被调用"<<endl;
}
~WORKER(){}
void getselary()
{
cout<<salary<<endl;
}
void changename(string name)
{
this->name=name;
}
void show()
{
cout<<ID<<" "<<name<<" "<<age<<" "<<workyears<<" "<<salary<<endl;
}
int getworkyears()
{
return workyears;
}
};
int main()
{
WORKER k;
WORKER work1(1000,"张三",36,42,3600);
work1.show();
PEOPLE* p1;
p1=&work1;
p1->getselary();
p1->changename("李四");
p1->show();
WORKER *workgroup=new WORKER[3];
workgroup[0]=WORKER(1001,"张四",32,43,3601);
workgroup[1]=WORKER(1002,"张五",33,44,3602);
workgroup[2]=WORKER(1003,"张六",34,45,3603);
p1=&workgroup[0];
p1->show();
WORKER *PP[3];
PP[0]=&workgroup[0];
PP[0]->show ();
PEOPLE* ppp[3]={&workgroup[0],&workgroup[1],&workgroup[2]};//也可以使用WORKER* ppp[3]={&workgroup[0],&workgroup[1],&workgroup[2]};
//PEOPLE* ppp[3]表现出virtual的妙处
int sum=0;
for(int i=0;i<3;i++)
{
sum+=ppp[i]->getworkyears();
}
cout<<sum<<endl;
delete []workgroup;
return 0;
}