C++day6

devtools/2025/2/26 19:41:58/

编写一个如下场景:
有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法
编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法
编写一个 长剑 Sword 类,继承自武器类,拓展属性 生命值,以及set get 方法
编写一个 匕首Blade类,继承自武器类,拓展属性 速度,以及set get 方法
编写一个 斧头 Axe类,继承自武器类,拓展属性 防御力,以及set get 方法

武器Weapon类里面,要求有一个多态函数,叫做 equip 函数
英雄Hero类里面,要求有一个公开函数,equipWeapon(Weapon* w)
实现功能:英雄既可以装备长剑,也可以装备短剑,也可以装备斧头,但是要求装备不同的武器,英雄需要获得不同的属性加成

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;class Weapon {
protected:int attackPower; public:Weapon(int attackPower) : attackPower(attackPower) {}void setAttackPower(int attackPower) {this->attackPower = attackPower;}int getAttackPower() const {return attackPower;}virtual void equip() const {}
};class Sword : public Weapon {
private:int healthBoost; public:Sword(int attackPower, int healthBoost) : Weapon(attackPower), healthBoost(healthBoost) {}void setHealthBoost(int healthBoost) {this->healthBoost = healthBoost;}int getHealthBoost() const {return healthBoost;}void equip() const override {cout << "装备长剑:+" << attackPower << " 攻击力,+" << healthBoost << " 生命值。" << endl;}
};class Blade : public Weapon {
private:int speedBoost; public:Blade(int attackPower, int speedBoost) : Weapon(attackPower), speedBoost(speedBoost) {}void setSpeedBoost(int speedBoost) {this->speedBoost = speedBoost;}int getSpeedBoost() const {return speedBoost;}void equip() const override {cout << "装备匕首:+" << attackPower << " 攻击力,+" << speedBoost << " 速度。" << endl;}
};class Axe : public Weapon {
private:int defenseBoost; public:Axe(int attackPower, int defenseBoost) : Weapon(attackPower), defenseBoost(defenseBoost) {}void setDefenseBoost(int defenseBoost) {this->defenseBoost = defenseBoost;}int getDefenseBoost() const {return defenseBoost;}void equip() const override {cout << "装备斧头:+" << attackPower << " 攻击力,+" << defenseBoost << " 防御力。" << endl;}
};class Hero {
private:int attack;int defense;int speed;int health;public:Hero(int attack, int defense, int speed, int health): attack(attack), defense(defense), speed(speed), health(health) {}void setAttack(int attack) {this->attack = attack;}int getAttack() const {return attack;}void setDefense(int defense) {this->defense = defense;}int getDefense() const {return defense;}void setSpeed(int speed) {this->speed = speed;}int getSpeed() const {return speed;}void setHealth(int health) {this->health = health;}int getHealth() const {return health;}void equipWeapon(Weapon* w) {cout << "装备武器" << endl;w->equip(); }
};int main() {Hero hero(10, 10, 10, 100);cout << "初始属性:攻击力 " << hero.getAttack() << ",防御力 " << hero.getDefense()<< ",速度 " << hero.getSpeed() << ",生命值 " << hero.getHealth() << endl;Sword sword(10, 20);Blade blade(10, 20);Axe axe(20, 10);hero.equipWeapon(&sword);hero.equipWeapon(&blade);hero.equipWeapon(&axe);return 0;
}

输出结果:


http://www.ppmy.cn/devtools/162873.html

相关文章

DeepSeek开源周第二日-DeepEP

&#x1f680;deepseek开源周第二天&#xff0c;DeepEP&#xff1a;专为MoE和专家并行打造的高性能通信库 &#x1f525;DeepEP 主要特点 &#x1f4a1; 高效 GPU 通信内核&#xff1a;提供高吞吐、低延迟的 all-to-all GPU 内核&#xff08;MoE dispatch & combine&…

Ansible-03 docker安装-基于centos

1.创建invertory.ini并验证连通性 创建invertory.ini [docker_servers] 192.168.0.2执行命令 ansible -i invertory.ini docker_servers -m ping结果 192.168.0.2 | SUCCESS > {"ansible_facts": {"discovered_interpreter_python": "/usr/lib…

API技术深度解析:构建高效、安全与可扩展的接口服务

在当今的数字化时代&#xff0c;应用程序接口&#xff08;API&#xff0c;Application Programming Interface&#xff09;已成为连接不同软件系统和服务的桥梁&#xff0c;是推动数字化转型的关键技术之一。无论是企业内部系统集成、第三方服务接入&#xff0c;还是面向开发者…

CNewMenu::QueryContextMenu函数分析之新建菜单项的创建

CNewMenu::QueryContextMenu函数分析之新建菜单项的创建 第一部分&#xff1a; HRESULT CNewMenu::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { // if they want the default menu only (CMF_DEFAULTONLY) OR //…

进程间通信中间件---ZeroMQ

ZeroMQ&#xff08;也称为 MQ 或 0MQ&#xff09;是一个高性能的异步消息传递库&#xff0c;专为分布式或并发应用程序设计。它提供了多种通信模式&#xff08;如请求-响应、发布-订阅等&#xff09;&#xff0c;并且可以在多种传输协议&#xff08;如 TCP、IPC、PGM 等&#x…

大语言模型(LLM)提示词(Prompt)高阶撰写指南

——结构化思维与工程化实践 一、LLM提示词设计的核心逻辑 1. 本质认知 LLM是「超强模式识别器概率生成器」&#xff0c;提示词的本质是构建数据分布约束&#xff0c;通过语义信号引导模型激活特定知识路径。优秀提示词需实现&#xff1a; 精准性&#xff1a;消除歧义&#…

seacmsv9管理员账号+密码注入

Seacms v9 SQL 注入漏洞分析与利用 1. 漏洞概述 Seacms&#xff08;海洋 CMS&#xff09;是一款基于 PHP5.X MySQL 架构的视频点播系统&#xff0c;被广泛用于影视站点管理。在 Seacms v9 版本中&#xff0c;./comment/api/index.php 存在 SQL 注入漏洞&#xff0c;漏洞参数…

【Linux】初探信号的奥秘

目录 一、引入信号&#xff1a; 1、什么是信号&#xff1a; 二、前后台进程&#xff1a; 三、信号的处理方式&#xff1a; 四、键盘数据与信号&#xff1a; 前言&#xff1a; 在Linux系统编程中&#xff0c;信号&#xff08;Signal&#xff09;是一种至关重要的进程间通信…