C++ 多态作业练习

作业1、

编写一个英雄类

class Hero{

int atk;

int def;

int spd;

int hp;

public:

所有的get set 方法

void equipWeapon(Weapon*)

根据传入的武器不同,英雄获得不同的属性加成

}

cpp 复制代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
using namespace std;

class Hero
{
private:
	int property; //属性
public:	
	Hero(int property = 0):property(property){}
	void addproperty(int buff)
	{
		property += buff;
	}

	int getproperty()
	{
		return property;
	}

	virtual void Igetproperty(){}
};

class atk: public Hero
{
public:
	atk(int property = 0):Hero(property){}
	virtual void Igetproperty()
	{
		addproperty(30);
	}
};

class def: public Hero
{
public:
	def(int property = 0):Hero(property){}
	virtual void Igetproperty()
	{
		addproperty(10);
	}

};

class spd: public Hero
{
public:
	spd(int property = 0):Hero(property){}
	virtual void Igetproperty()
	{ 
		addproperty(20);
	}

};

class hp: public Hero
{
public:	
	hp(int property = 0):Hero(property){}
	virtual void Igetproperty()
	{
   		addproperty(900);
	}

};

void propertyshow(Hero** addr)
{
	for(int i=0;addr[i]!= NULL;i++)
	{
		addr[i]->Igetproperty();
		cout << addr[i]->getproperty() << endl;
	}
}


int main(int argc,const char** argv)
{
	atk a;
	def b;
	spd c;
	hp d;
	Hero* addr[5] = {&a,&b,&c,&d};
	propertyshow(addr);

	return 0;
}
相关推荐
<但凡.8 分钟前
题海拾贝:力扣 138.随机链表的复制
数据结构·算法·leetcode
安大小万25 分钟前
C++ 学习:深入理解 Linux 系统中的冯诺依曼架构
linux·开发语言·c++
田梓燊40 分钟前
图论 八字码
c++·算法·图论
Tanecious.1 小时前
C语言--数据在内存中的存储
c语言·开发语言·算法
去往火星2 小时前
opencv在图片上添加中文汉字(c++以及python)
开发语言·c++·python
Bran_Liu2 小时前
【LeetCode 刷题】栈与队列-队列的应用
数据结构·python·算法·leetcode
kcarly2 小时前
知识图谱都有哪些常见算法
人工智能·算法·知识图谱
CM莫问2 小时前
<论文>用于大语言模型去偏的因果奖励机制
人工智能·深度学习·算法·语言模型·自然语言处理
程序猿零零漆3 小时前
《从入门到精通:蓝桥杯编程大赛知识点全攻略》(五)-数的三次方根、机器人跳跃问题、四平方和
java·算法·蓝桥杯
Zfox_3 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·c++