// 补充必要的头文件(原代码缺失) #include <iostream> #include <string> using namespace std; // 基类:人员基本信息 class Person // 类名首字母大写,符合C++命名规范 { private: int age; // 年纪 string name; // 姓名 string identity; // 身份(原shenfen,英文更易读) public: // 优化点1:string类型默认值改为空字符串"",而非NULL Person(int m_age = 0, string m_name = "", string m_identity = "") : age(m_age), name(m_name), identity(m_identity) { // 可选:增加参数合法性检查,增强健壮性 if (age < 0) age = 0; // 年龄不能为负数 } // 虚函数,为多态提供基础 virtual void show() const { cout << "信息如下:" << endl; cout << "年龄:" << age << endl; cout << "姓名:" << name << endl; cout << "身份:" << identity << endl; } }; // 派生类:学生 class Student : public Person { private: string education; // 学历(原xueli,英文更易读) public: // 优化点1:string默认值改为"" Student(int age = 0, string name = "", string identity = "", string m_education = "") : Person(age, name, identity), education(m_education) {} void show() const override // 补充override关键字,明确重写基类虚函数 { Person::show(); cout << "学历:" << education << endl; } }; // 派生类:老师 class Teacher : public Person { private: string teachingSubject; // 教学科目(原Subject,命名更清晰) public: // 优化点1:string默认值改为"",修正参数名拼写错误(原m_subjcet) Teacher(int age = 0, string name = "", string identity = "", string m_subject = "") : Person(age, name, identity), teachingSubject(m_subject) {} void show() const override { Person::show(); cout << "教学科目:" << teachingSubject << endl; } }; // 派生类:职工 class Employee : public Person { private: string workUnit; // 工作单位(原unit,命名更清晰) public: // 优化点1:string默认值改为"" Employee(int age = 0, string name = "", string identity = "", string m_unit = "") : Person(age, name, identity), workUnit(m_unit) {} void show() const override { Person::show(); cout << "工作单位:" << workUnit << endl; } }; // 派生类:在职读书的老师(原Study_Work,类名更直观) class TeacherWithStudy : public Person { private: string teachingSubject; // 教学科目(命名和Teacher类保持一致) string education; // 学历(命名和Student类保持一致) public: // 优化点1:string默认值改为"" TeacherWithStudy(int age = 0, string name = "", string identity = "", string m_subject = "", string m_education = "") : Person(age, name, identity), teachingSubject(m_subject), education(m_education) {} void show() const override { Person::show(); cout << "教学科目:" << teachingSubject << endl; cout << "学历:" << education << endl; } }; int main() { Person* p1 = nullptr, * p2 = nullptr, * p3 = nullptr, * p4 = nullptr; // 创建各派生类对象 Student st(22, "王五", "学生", "高中生"); p1 = &st; p1->show(); cout << endl; Teacher te(30, "张三", "老师", "数学"); p2 = &te; p2->show(); cout << endl; Employee em(45, "老王", "职工", "保安"); p3 = &em; p3->show(); cout << endl; TeacherWithStudy sw(26, "李四", "在职读书老师", "大学英语", "研究生"); p4 = &sw; p4->show(); return 0; }大学有这样几类人员:学生、教师、职员和在职读书的教师。给出这几类人员的类描述。
张小明
前端开发工程师
Linux:分包上传文件
目录分包合并解压分包 推荐使用360压缩 合并 cat xxx.zip.* > xxx.zip解压 unzip xxx.zip
C 环境设置
C 环境设置 引言 C语言作为一种历史悠久且应用广泛的编程语言,在系统编程、嵌入式开发等领域有着举足轻重的地位。在进行C语言编程之前,必须正确设置C语言开发环境。本文将详细介绍C语言环境的设置,包括开发工具的选择、编译器的安装、环境变量的配置等内容。 开发工具选…
AI上下文工程解密:提示工程架构师的终极指南
AI上下文工程解密:提示工程架构师的终极指南 一、引言:为什么你的AI总是“听不懂”? 1.1 一个扎心的痛点:你写的Prompt,AI真的懂吗? 上周凌晨3点,我在客户的AI客服系统排查问题——用户明明说…
提示工程学习型组织知识管理工具:架构师的10个推荐
提示工程学习型组织知识管理工具:架构师的10个推荐 关键词 提示工程(Prompt Engineering)、学习型组织(Learning Organization)、知识管理(Knowledge Management)、工具选型(Tool Se…
Cassandra 性能优化:10 个技巧让你的查询速度翻倍
Cassandra 性能优化:10 个技巧让你的查询速度翻倍 关键词:Cassandra 性能优化、数据模型设计、分区键优化、复制策略、二级索引、SSTable 压缩、一致性级别、连接池配置、硬件调优、监控工具 摘要:本文系统解析 Apache Cassandra 性能优化的核…
STM32_芯片介绍
文章目录 一、STM32是什么二、STM32分类三、STM32命名规范 1、STM32 2、类型 3、子系列 4、引脚数 5、存储量 6、封装 7、工作温度 四、分配原理图引脚五、参考手册和数据手册 1、参考手册 2、数据手册 六、引脚的功能定义解读 一、STM32是…