当前位置: 首页 > news >正文

大学有这样几类人员:学生、教师、职员和在职读书的教师。给出这几类人员的类描述。

// 补充必要的头文件(原代码缺失) #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; }
http://www.jsqmd.com/news/347179/

相关文章:

  • GJ504b 的 React 进阶之路:Day 5
  • LLVM的混淆之旅(五)-手动实现控制流平坦化混淆
  • 在service方法中已经catch异常,Transactional失效怎么办 - 教程
  • 拼多多 最新 anti-content 分析
  • 【信息融合与状态估计】时滞系统的协方差交叉融合估计研究附Matlab代码
  • 建立普通的基类Building,用来存储一座楼房的层数、房间数以及它的总平方米数。建立派生类House,继承Building,并存储下面的内容:卧室与浴室的数量。另外,建立派生类Office,继承Bu
  • 【信息矩阵融合算法】【融合】【Dempster-Shafer】自动驾驶应用中环境感知的目标级融合研究附Matlab代码
  • 【通信】基于DPCM编码及2DPSK调制数字频带通信系统Matlab仿真
  • LLVM的混淆之旅(五)-控制流平坦化混淆
  • 2026-02-05学习
  • 数字图像处理篇---颜色空间
  • 【信号调制】使用不同的分类器(逻辑回归分类器、决策树、随机森林、全连接密集层和CNN)来训练模型,以预测不同信噪比值下信号的调制类型附Python代码
  • 数字图像处理篇---颜色空间的发展历程
  • 软件时代正在终结?2026,一场静默的AI革命正重塑我们的工作与未来
  • 数字图像处理篇---图像高通滤波
  • Redmi AX6 TTL 救砖记录
  • 数字图像处理篇---图像合成
  • 深度学习篇---Diffusion模型
  • 数字图像处理篇---小波变换
  • WSL2 + Aider(Kimi) + Windows Trae 双擎开发环境实施文档
  • 数字图像处理篇---图像低通滤波
  • 数字图像处理篇---图像离散余弦变换
  • 市场风险的防范策略
  • Excel向下舍入利器ROUNDDOWN函数:精准截断与季度计算的优雅解决方案
  • 豆包能投广告吗?如何做豆包推广?一文讲透豆包营销新路径 - 品牌2025
  • SW草图绘制之圆弧绘制
  • Matplotlib 绘制多图
  • 寒假12
  • ArcGIS Python零基础脚本开发教程---11.4 Array类
  • C 环境设置