1 /* 2 多态:父类虚函数、子类重写虚函数 3 类之间的关系强弱顺序:继承(泛化)> 组合 > 聚合 > 关联 > 依赖 4 关联的两个对象之间一般是平等的,聚合则一般不平等 5 关联关系:表示两个对象之间的一种简单的联系,如朋友之间,关系平等 6 聚合关系:独立存在,如人和书之间 7 组合关系:不能独立存在,如人和心脏之间 8 */ 9 #include "iostream" 10 class Hero 11 { 12 public: 13 Hero(std::string Name) : m_Name(Name) 14 { 15 } 16 virtual void Release_skills() { std::cout << "释放技能" << std::endl; } 17 virtual void speak() { std::cout << "说话" << std::endl; } 18 19 virtual std::string getName() = 0; //纯虚函数、子类必须重写,否则无法实例化 20 21 virtual void setCSName(std::string CSNamse) //虚函数、可以不在子类中进行重写 22 { 23 m_CSName = CSNamse; 24 } 25 virtual std::string getCSName() 26 { 27 std::cout << "我的超兽是:" << m_CSName.c_str() << std::endl; 28 return m_CSName; 29 } 30 protected: 31 std::string m_Name = ""; 32 std::string m_CSName = ""; 33 }; 34 35 class HLF : public Hero 36 { 37 public: 38 HLF(std::string Name) : Hero(Name) //委托构造函数 39 { 40 } 41 std::string getName() 42 { 43 std::cout << "我的名字是:" << m_Name.c_str() << std::endl; 44 return m_Name; 45 } 46 virtual void Release_skills()override //override表示重写虚函数以及检验虚函数名称是否正确 47 { 48 std::cout << "释放技能:火灵诀" << std::endl; 49 } 50 virtual void speak()override 51 { 52 std::cout << "敌人在我面前不是逃之夭夭,就是一败涂地 " << std::endl; 53 } 54 55 }; 56 57 class LJ :public Hero 58 { 59 public: 60 LJ(std::string Name) : Hero(Name) 61 { 62 } 63 virtual void Release_skills() 64 { 65 std::cout << "释放技能:寒影诀" << std::endl; 66 } 67 virtual void speak() 68 { 69 std::cout << "攻敌三分,自留七分 " << std::endl; 70 } 71 std::string getName() 72 { 73 std::cout << "我的名字是:" << m_Name.c_str() << std::endl; 74 return m_Name; 75 } 76 }; 77 78 int main() 79 { 80 //创建基类指针,让它指向派生类对象,用基类指针调用派生类的成员函数 81 std::unique_ptr<Hero> ptr1 = std::unique_ptr<Hero>(new HLF("火麟飞")); 82 ptr1->getName(); 83 ptr1->speak(); 84 ptr1->Release_skills(); 85 ptr1->setCSName("幻麟兽"); 86 ptr1->getCSName(); 87 88 std::cout << std::endl; 89 90 std::unique_ptr<Hero> ptr2 = std::unique_ptr<Hero>(new LJ("龙戬")); 91 ptr2->getName(); 92 ptr2->speak(); 93 ptr2->Release_skills(); 94 ptr2->setCSName("龙战兽"); 95 ptr2->getCSName(); 96 return 0; 97 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现