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;
}
相关推荐
yaoh.wang几秒前
力扣(LeetCode) 83: 删除排序链表中的重复元素 - 解法思路
程序人生·算法·leetcode·链表·面试·职场和发展
阿昭L5 分钟前
leetcode旋转链表
算法·leetcode·链表
山楂树の5 分钟前
有效的括号(栈)
数据结构·算法
im_AMBER6 分钟前
Leetcode 81 【滑动窗口(定长)】
数据结构·笔记·学习·算法·leetcode
xu_yule11 分钟前
算法基础(背包问题)-完全背包
c++·算法·动态规划·完全背包
x9766613 分钟前
使用 HMAC-SHA256算法对MCU UID进行加密
单片机·嵌入式硬件·算法
gfdhy14 分钟前
【c++】素数详解:概念、定义及高效实现(判断方法 + 筛法)
开发语言·c++·算法·数学建模·ai编程
Swift社区19 分钟前
LeetCode 452 - 用最少数量的箭引爆气球
算法·leetcode·职场和发展
lzh2004091921 分钟前
Set 和 Map 深入详解及其区别
数据结构·c++
SmoothSailingT31 分钟前
C/C++——结构体(Struct)
开发语言·c++·结构体·struct