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;
}
相关推荐
lucas_AI7 分钟前
Grok 4.6:追平 GPT-5.6 Sol 的半价旗舰,但别只看跑分
人工智能·算法
MC皮蛋侠客9 分钟前
TDengine C++ 系列(11):性能模型与调优——从测量到优化
c++·php·tdengine
zephyr059 分钟前
链表实现O(n log n)时间复杂度的排序——归并排序详解
java·数据结构·算法
喜欢睡觉12 分钟前
双指针判断子序列
算法
贵慜_Derek23 分钟前
vLLM-07|MegaMoE 与 FusedMoE:路由相同,算 expert 完全不同
人工智能·算法·llm
机器学习之心31 分钟前
基于改进鲸鱼优化算法的CNN-BiLSTM-MATT短期电力负荷预测模型
人工智能·算法·cnn·cnn-bilstm-matt·短期电力负荷预测
兔兔兔兔139 分钟前
记录C++ 3
开发语言·c++
windliang1 小时前
Claude Code 源码分析(十):MCP 外部工具如何进入下一轮 Agent 调用
前端·算法·面试
代码地平线1 小时前
C++类与对象(中):默认成员函数与日期类实战
c++·笔记·算法
hansang_IR1 小时前
【题解】可持久化区间仿射区间和(Persistent Range Affine Range Sum)
c++·算法·线段树