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

本文深入探讨了面向对象编程原则在C++中的应用,特别关注类、对象、继承和多态概念。通过实例展示了如何利用C++实现类的继承,并通过继承来扩展现有类的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值