C++:继承性_程序

编译器:vs2022

main.cpp

#include <iostream>
#include <iomanip>
#include "person.h"const int Sum = 2;class Group
{
protected:PostGra st[Sum];int sum;
public:Group();void Input();void SortByID();void Output();
};Group::Group()
{sum = Sum;
}void Group::Input()
{int i;for (i = 0; i < sum; i++)st[i].Input();
}void Group::SortByID()
{int index, i, k;PostGra temp;for (k = 0; k < sum - 1; k++){index = k;for (i = k + 1; i < sum; i++)if (st[i].GetID() < st[index].GetID())index = i;if (index != k){temp = st[index];st[index] = st[k];st[k] = temp;}}
}void Group::Output()
{int i;std::cout << std::endl << "The group information:" << std::endl;std::cout << "ID" << std::setw(10) << "Name" << std::setw(10) << "Age" << std::setw(10) << "Gender" <<std::setw(10) << "Spec" << std::setw(10) << "research"<< std::endl;for (i = 0; i < sum; i++){std::cout << st[i].GetID() << std::setw(10) << st[i].GetName()<< std::setw(10) << st[i].GetGender() << std::setw(10) << st[i].GetSpeciality()<< std::setw(10) << st[i].GetResearchTopic() << std::setw(10) << st[i].GetAcademicTitle() << std::endl;}
}int main()
{Group group;group.Input();group.SortByID();group.Output();return 0;
}

person.h

#pragma once
#ifndef _PERSON
#define _PERSON
#include <string>class Person
{
protected:std::string ID;std::string name;std::string gender;
public:Person(std::string = "000", std::string = "unknown", std::string = "unknown");void Input();std::string GetID();std::string GetName();std::string GetGender();
};class Student : virtual public Person
{
protected:std::string speciality;
public:Student(std::string, std::string, std::string = "000", std::string = "unknown");void Input();std::string GetSpeciality();
};class Graduate :virtual public Student
{
protected:std::string researchTopic;
public:Graduate(std::string=" ", std::string=" ", std::string=" ", std::string = "000", std::string = "unknown");void Input();std::string GetResearchTopic();
};class Teacher :virtual public Person
{
protected:std::string academicTitle;
public:Teacher(std::string, std::string, std::string, std::string = "unknown");void Input();std::string GetAcademicTitle();
};class PostGra :public Graduate, public Teacher
{
public:PostGra(std::string=" ", std::string=" ", std::string=" ", std::string=" ", std::string = "000", std::string = "unknown");void Input();
};
#endif

person.cpp

#include "person.h"
#include <iostream>Person::Person(std::string id, std::string name, std::string gender)
{ID = id;name = name;gender = gender;
}void Person::Input()
{std::cout << "Enter ID: ";std::cin >> ID;std::cout << "Enter name: ";std::cin >> name;std::cout << "Enter gender: ";std::cin >> gender;
}std::string Person::GetID()
{return ID;
}std::string Person::GetName()
{return name;
}std::string Person::GetGender()
{return gender;
}Student::Student(std::string id, std::string name, std::string gender, std::string speciality) : Person(id, name, gender)
{speciality = speciality;
}void Student::Input()
{Person::Input();std::cout << "Enter speciality: ";std::cin >> speciality;
}std::string Student::GetSpeciality()
{return speciality;
}Graduate::Graduate(std::string id, std::string name, std::string gender, std::string speciality, std::string rese) :Person(id, name, gender), Student(id, name, gender, speciality)
{researchTopic = rese;
}void Graduate::Input()
{Student::Input();std::cout << "Enter research topic: ";std::cin >> researchTopic;
}std::string Graduate::GetResearchTopic()
{return researchTopic;
}Teacher::Teacher(std::string id, std::string name, std::string gender, std::string title) : Person(id, name, gender)
{academicTitle = title;
}void Teacher::Input()
{Person::Input();std::cout << "Enter academic title: ";std::cin >> academicTitle;
}std::string Teacher::GetAcademicTitle()
{return academicTitle;
}PostGra::PostGra(std::string id, std::string name, std::string gender, std::string speciality, std::string rese, std::string title) : Person(id, name, gender), Student(id, name, gender, speciality), Teacher(id, name, gender, title)
{;
}void PostGra::Input()
{Graduate::Input();std::cout << "Enter academic title: ";std::cin >> academicTitle;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#数据库: 4.修改学生成绩

将4年级的学生成绩全部修改为100分,。修改前的学生信息表如图所示: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks;namespace StudentUpdate {internal class Program{s…

java 面试 -- 深拷贝与浅拷贝

一、浅拷贝 浅拷贝是指拷贝对象时仅仅拷贝对象本身和对象中的基本数据类型&#xff0c;而不拷贝对象中的引用类型。换句话说&#xff0c;对于对象中的引用类型&#xff0c;浅拷贝只是拷贝了引用&#xff0c;而没有拷贝引用的对象。因此&#xff0c;原对象和拷贝后的对象共享同…

Multi-Thread TCP Server Client

prerequisite knowledge: Basic TCP Server & Client: URL Server #include <stdio.h> #include <string.h> #include <unistd.h> // read and write (TCP); sendto and recvfrom (UDP) #include <arpa/inet.h> // 包含#include <sys/socket.…

Ubuntu如何更换 PyTorch 版本

环境&#xff1a; Ubuntu22.04 WLS2 问题描述&#xff1a; Ubuntu如何更换 PyTorch 版本考虑安装一个为 CUDA 11.5 编译的 PyTorch 版本。如何安装旧版本 解决方案&#xff1a; 决定不升级CUDA版本&#xff0c;而是使用一个与CUDA 11.5兼容的PyTorch版本&#xff0c;您可…

Mac远程桌面windows11

文章目录 一、Mac安装Microsoft Remote Desktop二、Window11打开远程登录权限三、常见问题 一、Mac安装Microsoft Remote Desktop 下载地址&#xff1a;点击这里官方下载 基本不用看&#xff0c;凭感觉用就行。搞不定详情见&#xff1a;官方说明 二、Window11打开远程登录权…

2024年4月个人工作生活总结

本文为 2024年4月工作生活总结。 研发编码 excel创建直方图 因工作需要&#xff0c;在excel学习使用了直方图。下面是文字版。 加载工具库&#xff1a; 直方图可在“数据”->"数据分析"中找到&#xff0c;如无&#xff0c;则要加载之。文件->选项->加载…

c#数据库: 10.调用存储过程查询信息,并显示在窗体上

查询女生信息&#xff0c;并将信息显示在窗体上: 原数据表//右键数据库名,新建查询 ------------- 新建查询窗口,添加新建存储过程Procedure_GetGirls1和查询代码如下 : CREATE PROCEDURE dbo.Procedure_GetGirls1 /*存储过程名称*/ AS SELECT * f…

[React] 手动实现CountTo 数字滚动效果

这个CountTo组件npmjs里当然有大把的依赖存在&#xff0c;不过今天我们不需要借助任何三方依赖&#xff0c;造个轮子来手动实现这个组件。 通过研究其他count to插件我们可以发现&#xff0c;数字滚动效果主要依赖于requestAnimationFrame 通过js帧来让数字动起来&#xff0c;…

【docker】Spring Boot3.x 打包 Docker容器

Docker化Spring Boot应用 创建文件夹 demo mkdir democd demo创建Dockerfile # 两个 openjdk 二选一 #FROM openjdk:17-jre-alpineFROM eclipse-temurin:17MAINTAINER chengxuyuanshitang <chengxuyuanshitangXX.com>RUN mkdir -p /workspace/java/demoCOPY demo.ja…

Python 与 TensorFlow2 生成式 AI(五)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十二章&#xff1a;用生成式人工智能玩视频游戏&#xff1a;GAIL 在之前的章节中&#xff0c;我们已经看到如何使用生成式人工智能来生成…

LVGL自定义滑动

触摸和编码器都可以操作 typedef struct {lv_obj_t* obj;int16_t x;int16_t y;int16_t width;int16_t height; }pos_and_size_t;typedef struct {lv_obj_t* obj;lv_coord_t height;lv_coord_t width;lv_coord_t width_pad;lv_coord_t height_pad;lv_coord_t child_widget;lv_co…

Mybatis.net + Mysql

项目文件结构 NuGet下载Mybatis.net相关包&#xff1a;IBatisNet 安装完成后&#xff0c;会显示在&#xff0c;在已安装页面。同时&#xff0c;在管理器中的引用列表中&#xff0c;会多出来两个引用文件 IBatisNet.CommonIBatisNet.DataMapper 安装 Mysql.data。 注意&#xff…

【设计模式】14、strategy 策略模式

文章目录 十四、strategy 策略模式14.1 map_app14.1.1 map_app_test.go14.1.2 map_app.go14.1.3 navigate_strategy.go 十四、strategy 策略模式 https://refactoringguru.cn/design-patterns/strategy 需求: client 知道很多不同的策略, 希望在运行时切换. 场景示例: 就像高…

使用一等对象函数重构策略模式

目录 经典的策略模式 使用函数重构策略模式 选择最佳策略的简单模式

C++ 中 scanf 的高阶用法:scanf(“%[a-z]“,ch);

● C 中 scanf 的高阶用法&#xff1a;scanf("%[a-z]",ch);语句 scanf("%[a-z]",ch); 表示只读入小写字母入字符串。任何包含非小写字母的字符串&#xff0c;将不能读入&#xff0c;自然也不可能有输出。例如&#xff1a; 运行下面代码&#xff1a;输入 ab…

Harbor服务器停电重启后用户不能登陆怎么办?

Harbor服务问题处理 今天遇到一个问题&#xff0c;可能因为这几天下暴雨打雷比较厉害&#xff0c;办公室机房跳闸&#xff0c;有一台测试服务器没有停电保护停机。重启这台服务器以后&#xff0c;上面运行的Harbor服务登陆不上&#xff0c;用户名和密码都没改过&#xff0c;搞…

Stm32CubeMX 为 stm32mp135d 添加网卡 eth

Stm32CubeMX 为 stm32mp135d 添加网卡 eth 一、启用设备1. eth 设备添加2. eth 引脚配置2. eth 时钟配置 二、 生成代码1. optee 配置2. uboot 配置3. linux 配置 bringup 可参考&#xff1a;Stm32CubeMX 生成设备树 一、启用设备 1. eth 设备添加 我这里只启用一个eth设备&…

特斯拉与百度合作;字节正全力追赶AI业务;小红书内测自研大模型

特斯拉中国版 FSD 或与百度合作 根据彭博社的报道&#xff0c;特斯拉将通过于百度公司达成地图和导航协议&#xff0c;扫清在中国推出 FSD 功能的关键障碍。 此前&#xff0c;中国汽车工业协会、国家计算机网络应急技术处理协调中心发布《关于汽车数据处理 4 项安全要求检测情…

【漏洞复现】zookeeper AdminServer 未授权访问漏洞

0x01 产品简介 ZooKeeper 是一个集中式服务&#xff0c;用于维护配置信息、命名、提供分布式同步和提供组服务。ZooKeeper的AdminServer是其管理界面的一部分&#xff0c;通常用于监控ZooKeeper集群的状态和执行一些管理操作。AdminServer提供了Web-based的管理和监控功能&…