虚基类,指向基类的指针,待删除

来源:互联网 发布:相同网址不同域名 编辑:程序博客网 时间:2024/06/07 03:36
#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;}

原创粉丝点击