实验3:C++多态编程——实验任务五

2023-11-10

[实验任务五]:人、学生和教师

设计一个类people,有保护数据成员:age(年龄,整型),name(姓名,string),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setValue(int m, string str)给age和name赋值;有一个void类型的纯虚函数display()。

设计一个学生类student,公有继承类people,有私有成员:studentID(学号,整型),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setID(int m)给studentID赋值;display()函数输出学生的姓名,年龄,学号。

设计一个教师类teacher,公有继承类people,有私有成员:teacherID(工号,整型),行为成员:两个构造函数(一个默认,另一个有参数);默认析构函数;void setID(int m)给teacherID赋值; display()函数输出教师的姓名,年龄,工号。

在main函数定义学生对象和教师对象,给对象初始化赋值或调用setValue()和setID()赋值,并输出学生和老师的信息。

提示:纯虚函数所在类不可定义对象

实验要求:

1.注意加上必要的输入输出提示;

2.注意开头的标注部分,加上自己的姓名以及修改日期;

#include<iostream>
using namespace std;
class People {
protected:
    int age;
    string name;
public:
    People() {};//默认构造函数
    People(int a, string n) {//有参数的构造函数
        age = a;
        name = n;
    }
    ~People() {};//析构函数
    void setValue(int m, string str) {
        age = m;
        name = str;
    }
    virtual void display() const = 0;//纯虚函数
};

void fun(People* ptr) {//抽象类的指针和引用
    ptr->display();
}

class Student : public People { 
private:
    int studentID;//
public:
    Student() {};//默认构造
    Student(int age, string name, int studentID) :People(age, name) {//含参构造
        this->studentID = studentID;
    }
    ~Student() {};//析构
    void setID(int m) {//studentID赋值
        this->studentID = m;
    }
    void display() const {//覆盖基类的虚函数,输出学生的姓名、年龄、学号
        cout << name << "," << age << "," << studentID << endl;
    }
};

class Teacher : public People {//Teacher类公有继承People类
private:
    int teacherID;//teacherID(工号,整型)
public:
    Teacher() {};//默认构造
    Teacher(int age, string name, int teacherID) :People(age, name) {//含参构造
        this->teacherID = teacherID;
    }
    ~Teacher() {};//析构函数
    void setID(int m) {//给teacherID赋值
        this->teacherID = m;
    }
    void display() const {//输出教师的姓名、年龄、工号
        cout << name << "," << age << "," << teacherID << endl;
    }
};


int main() {
    //定义对象
    People* people;
    Student student;
    Teacher teacher;
    int age;
    string name;
    int id;
    cout << "请输入年龄age、姓名name" << endl;
    cin >> age >> name;
    people = &student;
    people->setValue(age, name);
    people = &teacher;
    people->setValue(age, name);
    cout << "请输入学号" << endl;
    cin >> id;
    student.setID(id);
    cout << "请输入工号" << endl;
    cin >> id;
    teacher.setID(id);
    fun(&student);
    fun(&teacher);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验3:C++多态编程——实验任务五 的相关文章

  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable

随机推荐

  • 用虚拟机玩游戏的方法!! 开3D加速!

    曾经用过一些不同虚拟机结果大多都不支持3D驱动 所以导致虚拟机是不能够玩游戏的 今天给大家带来的是用虚拟机玩游戏的方法 虚拟机软件 VMWare虚拟机 版本最好是在6 0以上 硬件要求 CPU2 4以上 内存在1G以上 512的朋友可以试试
  • dedecms搜索功能实现

    index htm
  • @validate校验中的@NotEmpty、@NotBlank、@NotNull区别

    1 引入的包 jakarta validation api 2 0 2 jar 2 直接看源码上的注释 NotEmpty The annotated element must not be code null nor empty p Sup
  • coverity分析端软件环境搭建

    在某linux机器的 share2 coverity 目录下安装使用coverity说明 从官网下载安装文件 cov analysis linux64 2019 06 sh 放置于 share2 coverity 目录下 我是由于机器安装软
  • arch linux 防火墙,Arch linux操作系统之Firewalld防火墙安装使用

    本篇文章将介绍一下Arch下安装配置firewall防火墙 Centos7 X系列 FirewallD默认直接开启的 root Centos6 chkconfig list grep iptables centos6 x系列 iptable
  • c++day4

    仿照string类 完成myString 类 include
  • 【译】用 Rust 实现 csv 解析-part7

    Rust and CSV parsing 译文 用 Rust 实现 csv 解析 part7 原文链接 https blog burntsushi net csv 原文作者 BurntSushi 译文来自 https github com
  • 【华为OD机试真题】网上商城优惠活动(python版)100%通过率 超详细代码注释 代码解读

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 网上商城优惠活动 时间限制 1s 空间限制 50MB 限定语言 不限 题目描述 背景 某网上
  • C++的++

    include stdafx h int main int x y m n x 0 x x printf x 0 x x的值是 d n x x 0 y 0 y x printf x 0 y 0 y x的值是 d n y x 0 x x pr
  • Zotero使用指南02:配合Word

    转载Zotero使用指南02 配合Word Zotero是一款广受好评的文献管理软件 其具有四大优点 首先是开源免费 源代码托管在Github平台 其次 其软件界面基于浏览器内核 支持Windows MacOS Linux多种操作系统 此外
  • Threejs基础代码段(二)Tweenjs补间动画

    一 Tweenjs是什么 tween js是一款可生成平滑动画效果的js动画库 只需要告诉tween你想修改什么值 以及动画结束时它的最终值是什么 动画花费多少时间等信息 tween引擎就可以计算从开始动画点到结束动画点之间值 来产生平滑的
  • sqlmap tamper脚本_注入工具 -- sqlmap(注入参数)

    任何关系走到最后 不过相识一场 有心者有所累 无心者无所谓 情出自愿 事过无悔 不负遇见 不谈亏欠 一 指定数据库类型 dbms http 192 168 1 121 sqli Less 1 id 1 name 2 dbms mysql d
  • 前后端部署具体详解(Go+Vue+Nginx)

    与你相识 博主介绍 本人是普通大学生一枚 每天钻研计算机技能 CSDN主要分享一些技术内容 因我常常去寻找资料 不经常能找到合适的 精品的 全面的内容 导致我花费了大量的时间 所以会将摸索的内容全面细致记录下来 另外 我更多关于管理 生活的
  • AcWing 172. 立体推箱子 BFS+状态表示

    题 代码参考了书上的 判断是否合法的函数写的好精简 这题理解了 就能很好的理解BFS 状态表示的理解 lie 0 立着 lie 1 横着躺着 lie 2 竖着躺着 j 0123分别表示左右上下 nextx i j 代表lie i时x往j方向
  • C++进阶:继承

    继承 面向对象的三大特性 封装 继承 多态 继承在实际中用的也不是太多 但必须能熟练使用 1 继承的概念 继承机制是面向对象思想中复用代码的一种手段 它能够在原有类的特性的基础上进行扩展 由此产生新的类 称为派生类 原有类称作基类 继承体现
  • mybatis 中的<![CDATA[ ]]>用法及说明

    作用 在mybatis ibatis等书写SQL的xml中比较常见 是一种XML语法 他的作用是 可以忽略xml的转义 在该标签中的语句和字符原本是什么样的 在拼接成SQL后还是什么样的 使用 select from user where
  • 如何自定义设置虚拟机的的IP地址

    如何自定义设置虚拟机的的IP地址 之前我们装虚拟机的时候是选择使用DHCP服务器帮我们自动分配 现在我们想固定一个IP给虚拟机 方便以后使用 1 首先我们需要知道虚拟机可用的网段是哪一段 在VMware的主页点击编辑 然后点击里面的虚拟网络
  • 【区块链】(四)之常见的加密算法

    我们经常在谍战片里看到 我军传递情报用电报发送 但敌人也可以截取电报 这就需要对电报发送的内容进行加密 当时常用的加密方式是通过一段密文 对情报进行加密 比如说是当天的日报 这种属于对称加密 差不多是DES加密算法 这里简单介绍几种 主要介
  • 对话生成模型中的条件变分自编码器(CVAE)

    废话不多说直接上模型 这是一个非常经典的对话生成模型 叫做HRED Hierarchical RNN Enconder Decoder 思路很简单 就是用一个RNN来建模前 j 1 j 1 j 1句话 再用一个RNN来建模第 j j j句话
  • 实验3:C++多态编程——实验任务五

    实验任务五 人 学生和教师 设计一个类people 有保护数据成员 age 年龄 整型 name 姓名 string 行为成员 两个构造函数 一个默认 另一个有参数 默认析构函数 void setValue int m string str