【C++ Primer Plus习题】14.5

news2024/11/23 20:09:36

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

这里是引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解答:
main.cpp

#include <iostream>
using namespace std;
#include "emp.h"

int main()
{
	employee em("Trip", "Harris", "Thumper");
	cout << em << endl;
	em.ShowAll();
	manager ma("Amorphia", "Spindragon", "Nuancer", 5);
	cout << ma << endl;
	em.ShowAll();

	fink fi("Matt", "Oggs", "Oiler", "Juno Barr");
	cout << fi << endl;
	fi.ShowAll();
	highfink hf(ma, "Curly Kew");
	hf.ShowAll();
	cout << "Press a key for next phase:\n";
	while (cin.get() != '\n')continue;
	highfink hf2;
	hf2.SetAll();
	cout << "Using an abstr_emp*pointer:\n";
	abstr_emp* tri[4] = { &em,&fi,&hf,&hf2 };
	for (int i = 0; i < 4; i++)
		tri[i]->ShowAll();
	return 0;
}

emp.h

#pragma once
#include <iostream>
#include <string>
using namespace std;

class abstr_emp
{
private:
	string fname;
	string lname;
	string job;
public:
	abstr_emp();
	abstr_emp(const string& fn, const string& ln, const string& j);
	virtual void ShowAll()const;
	virtual void SetAll();
	friend ostream& operator<<(ostream& os, const abstr_emp& e);
	virtual ~abstr_emp()=0;
};
class employee :public abstr_emp
{
public:
	employee();
	employee(const string& fn, const string& ln, const string& j);
	virtual void ShowAll()const override;
	virtual void SetAll() override;
};

class manager :virtual public abstr_emp
{
private:
	int inchargeof;
protected:
	int InChargeOf()const { return inchargeof; }
	int& InChargeOf() { return inchargeof; }
public:
	manager();
	manager(const string& fn, const string& ln, const string& j, int ico = 0);
	manager(const abstr_emp& e, int ico);
	manager(const manager& m);
	virtual void ShowAll()const override;
	virtual void SetAll()override;
};

class fink :virtual public abstr_emp
{
private:
	string reportsto;
protected:
	const string ReportsTo()const { return reportsto; }
	string& ReportsTo() { return reportsto; }
public:
	fink();
	fink(const string& fn, const string& ln, const string& j, const string& pro);
	fink(const abstr_emp& e, const string& pro);
	fink(const fink& e);
	virtual void ShowAll()const override;
	virtual void SetAll()override;
};

class highfink :public manager, public fink
{
public:
	highfink();
	highfink(const string& fn, const string& ln, const string& j, const string& pro, int ico);
	highfink(const abstr_emp& e, const string& rpo, int ico);
	highfink(const fink& f, int ico);
	highfink(const manager& m, const string& rpo);
	highfink(const highfink& h);
	virtual void ShowAll()const override;
	virtual void SetAll()override;
};


emp.cpp

#include "emp.h"

abstr_emp::abstr_emp():lname("none"),fname("none"),job("none")
{

}
abstr_emp::abstr_emp(const string& fn, const string& ln, const string& j)
{
	lname = ln;
	fname = fn;
	job = j;
}
void abstr_emp::ShowAll()const
{
	cout << "NAME: " << fname << "." << lname << endl;
	cout << "JOB TITLE: " << job << endl;
}
void abstr_emp::SetAll()
{
	cout << "Entenr the first name: ";
	getline(cin, fname);
	cout << "Entenr the last name: ";
	getline(cin, lname);
	cout << "Entenr the job title: ";
	getline(cin, job);
}
ostream& operator<<(ostream&os, const abstr_emp& e)
{
	os << "NAME: " << e.fname << "." << e.lname << endl;
	os << "JOB TITLE: " << e.job << endl;
	return os;
}
abstr_emp::~abstr_emp()
{

}


employee::employee():abstr_emp()
{

}
employee::employee(const string& fn, const string& ln, const string& j):abstr_emp(fn, ln, j)
{
	
}
void employee::ShowAll()const
{
	abstr_emp::ShowAll();
}
void employee::SetAll()
{
	abstr_emp::SetAll();
}

manager::manager():abstr_emp()
{
	inchargeof=0;
}
manager::manager(const string& fn, const string& ln, const string& j, int ico):abstr_emp(fn,ln,j)
{
	inchargeof = ico;
}
manager::manager(const abstr_emp& e, int ico):abstr_emp(e)
{
	inchargeof = ico;
}
manager::manager(const manager& m):abstr_emp(m)
{
	inchargeof = m.inchargeof;
}
void manager::ShowAll()const
{
	abstr_emp::ShowAll();
	cout << "IN CHARGE OF:" << inchargeof << endl;
}
void manager::SetAll()
{
	abstr_emp::SetAll();
	cout << "Enter the number of in charge:";
	cin >> inchargeof;
	while (cin.get() != '\n')continue;
}


fink::fink():abstr_emp()
{

}
fink::fink(const string& fn, const string& ln, const string& j, const string& pro):abstr_emp(fn,ln,j)
{
	this->reportsto = pro;
}
fink::fink(const abstr_emp& e, const string& pro):abstr_emp(e)
{
	this->reportsto = pro;
}
fink::fink(const fink& e):abstr_emp(e)
{
	this->reportsto = e.reportsto;

}
void fink::ShowAll()const
{
	abstr_emp::ShowAll();
	cout << "REPORT TO:" << reportsto << endl;
}
void fink::SetAll()
{
	abstr_emp::SetAll();
	cout << "Enter the reports to whom: ";
	getline(cin, reportsto);
}

highfink::highfink():abstr_emp(),manager(),fink()
{

}
highfink::highfink(const string& fn, const string& ln, const string& j, const string& pro, int ico):abstr_emp(fn,ln,j),manager(fn,ln,j,ico),fink(fn,ln,j,pro)
{

}
highfink::highfink(const abstr_emp& e, const string& pro, int ico):abstr_emp(e),manager(e,ico),fink(e,pro)
{

}
highfink::highfink(const fink& f, int ico):abstr_emp(f),fink(f),manager(f,ico)
{

}
highfink::highfink(const manager& m, const string& rpo):abstr_emp(m),manager(m),fink(m,rpo)
{

}
highfink::highfink(const highfink& h):abstr_emp(h),manager(h),fink(h)
{

}
void highfink::ShowAll()const
{
	manager::ShowAll();
	cout << "Reportsto: " << ReportsTo() << endl;
	cout << endl;
}
void highfink::SetAll()
{
	manager::SetAll();
	cout << "Enter the reportsto:";
	getline(cin, fink::ReportsTo());
}

运行结果:
在这里插入图片描述

考查点:

  • 虚继承
  • 抽象类
  • 菱形继承
  • 初始化列表

2024年9月11日15:53:51

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

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

相关文章

Xinstall地推解决方案:精准追踪,提升App推广效果!

在移动互联网时代&#xff0c;App的推广和运营成为了开发者们面临的一大挑战。尤其是地推活动&#xff0c;作为App推广的重要手段&#xff0c;其效果直接关系到产品的用户增长和活跃度。然而&#xff0c;传统的地推方式存在着诸多痛点&#xff0c;如业绩统计繁琐、推广效果难以…

Excel怎么去除公式保留数字,一个快捷键也能搞定

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4ca;在处理Excel数据时&#xff0c;我们经常会遇到需要从公式单元格中提取数值的情况。例如&#xff0c;你可能有一个包含公式的列&#xff0c;但只需要那些公式计算后的数字。今天&#xff0c;我们就来学习几种在…

无线领夹麦克风哪款好,无线麦克风品牌排行榜前十名,智商税详谈

​无线领夹麦克风如今是视频创作者、直播博主等群体常用的音频设备&#xff0c;但由于品牌和型号众多&#xff0c;消费者在购买时常常不知如何选择。从市场情况来看&#xff0c;某些品牌在销量上占据优势&#xff0c;但在口碑方面&#xff0c;一些专注品质的小众品牌可能更胜一…

《DB-GPT项目》专栏总目录

❤️ 专栏名称&#xff1a;《DB-GPT项目》 &#x1f339; 内容介绍&#xff1a;项目部署、大模型替换、底层源码修改、数据分析、数据可视化、自动化等&#xff0c;适合零基础和进阶的同学。 &#x1f680; 订阅专栏&#xff1a;订阅后可阅读专栏内所有内容&#xff0c;专栏持续…

配电房数字式仪表读数识别算法开发

文章目录 一、概述二、训练数据准备2.1 自动生成图片2.2 爬虫搜集图片 三、模型训练及测试3.1 数据集组成3.2 模型训练及评价3.3 预测结果可视化 四、小结 一、概述 数字式仪表是指以数字的形式呈现仪表读数的仪表类型&#xff0c;其特点是读数比较直观&#xff0c;如下图为配…

react 安装使用 antd+国际化+定制化主题+样式兼容

安装antd 现在从 yarn 或 npm 或 pnpm 安装并引入 antd。 yarn add antd修改 src/App.js&#xff0c;引入 antd 的按钮组件。 import React from react; import { Button } from antd;const App: React.FC () > (<div className"App"><Button type&q…

【鸿蒙】HarmonyOS NEXT星河入门到实战5-基础语法

目录 一、字符串拼接 1.1 常规字符串拼接 1.2 模板字符串hello(符号在键盘的tab上面) 二、类型转换 &#xff08;数字和字符串&#xff09; 2.1 字符串转数字 2.2 数字转字符串 三、交互 3.1 点击事件 3.2 状态管理 3.3 计数器案例 四、运算符 4.1 算数运算符 4.2 赋…

[001-03-007].第26节:分布式锁迭代3->优化基于setnx命令实现的分布式锁-防锁的误删

我的博客大纲 我的后端学习大纲 1、问题分析&#xff1a; 1.1.问题&#xff1a; 1.锁的超时释放&#xff0c;可能会释放其他服务器的锁 1.2.场景&#xff1a; 1.如果业务逻辑的执行时间是7s。执行流程如下 1.index1业务逻辑没执行完&#xff0c;3秒后锁被自动释放。2.index…

企业会议室预约管理系统

基于springbootvuemysql实现的企业会议室预约管理系统&#xff08;源码数据库部署视频&#xff09; ### 主要技术 SpringBoot、Vue、MySQL ### 系统角色 员工、管理员 ### 系统功能 1&#xff09;管理员&#xff1a;数据统计&#xff08;会议室使用统计-柱状图、设备状态统计…

C++:2024/9/11

B. Increase/Decrease/Copy 原题链接&#xff1a;Problem - B - Codeforces 题目大意&#xff1a; ​ 给一颗树&#xff0c;规定编号为1的节点为根节点&#xff0c;每个节点上初始会有一个值&#xff0c;你每次可以进行操作&#xff0c;这个操作是选定一个非叶子节点的节点…

Parallels Desktop 20 最新版,带来哪些新功能(附下载链接)!

很兴奋地向大家宣布&#xff0c;Parallels Desktop 20 for Mac 正式发布啦——这是我们产品迄今为止最强大的版本&#xff01; 这次最大的亮点是全新推出的 Parallels AI 工具包&#xff0c;它提供安全的、可下载的预装虚拟机&#xff0c;让你可以在离线环境中迅速提升 AI 开发…

python中swift包的安装

魔搭社区上经常会有swift这种包需要导,但是在pip install swift怎么装都装不上,这时候需要: pip install ms-swift -U

蓝牙也会更新?新功能有这些便捷之处

本周&#xff0c;蓝牙技术联盟发布了蓝牙 6.0 的最新版本&#xff0c;其中引入了一项名为“信道探测”的新功能。这一功能将大幅提升苹果设备上的“查找”应用表现&#xff0c;为用户带来前所未有的距离感知能力。蓝牙 6.0 承诺&#xff0c;未来的蓝牙设备和配件将能够实现“相…

Eprime学习【E-basic语言、心理学实验程序设计】

文章目录 Eprime学习心理学实验程序设计的基本框架一、实验设计的基本原则二、实验过程&#xff08;procedure&#xff09;与实验列表&#xff08;list&#xff09;三、心理学实验设计的基本模式四、心理学常用的功能与制作 E-basic语言 Eprime学习 心理学实验程序设计的基本框…

MySQL表操作(中)

查询 去重 //相同的行只会保留一个 select distinct 某个列/多个列 from 表名; 这个去重必须是所要进行去重的列的所要去重的数据都是相同&#xff0c;单一某一列相同并不会进行去重的效果。例子如下图&#xff0c;数学得分相同的并未进行去重&#xff0c;必须名字和得分都相同…

工厂安灯系统在设备管理中的重要性

在现代制造业中&#xff0c;设备管理是确保生产效率和产品质量的关键环节。随着工业4.0的推进&#xff0c;越来越多的企业开始采用智能化的设备管理系统&#xff0c;其中安灯系统作为一种有效的管理工具&#xff0c;逐渐受到重视。安灯系统最初源于日本的丰田生产方式&#xff…

友思特方案 | 搭建红外桥梁:嵌入式视觉接口助力红外热像仪传输

导读 为红外成像设备数据传输快速搭桥&#xff01;友思特嵌入式视觉接口能帮助用户快速享有 GigE Vision 协议优势&#xff0c;是红外成像设备视觉接口集成、开发高性能相机的高效快捷方案。 引言 红外热像仪作为一种非接触式设备&#xff0c;能够检测红外能量&#xff08;热量…

Vm软件安装_链接相机

工业相机的驱动连接 下载安装MVS MVS 客户端支持安装在 Windows XP/7/10 32/64bit&#xff0c;Linux 32/64bits 以及MacOS64bits操作系统上。本文以 Windows 系统为例进行介绍。 具体操作步骤如下&#xff1a; 请从海康机器人官网&#xff08;www.hikrobotics.com&#xff0…

【鸿蒙开发从0到1 day09】

鸿蒙开发基础-ArkUI基本布局 一 .设计资源-图标库1.阿里矢量图图标库2.HarmonyOS图标库 二.布局属性1.内边距2.外边距3.边框线4.边框圆角 三.背景属性1.背景颜色2.背景图片(1)背景图的缩放(2)背景图的显示位置 四.颜色渐变1.线性渐变2.径向渐变 五.阴影六.可选择链操作符(?)七…

密码学---真题演练

✨Base加密&#xff1a;题目-base? 靶场网址&#xff1a;https://polarctf.com/ Base100加密&#xff01;&#xff01;&#xff01; 得到的新的一串密码是 rot47 密码&#xff0c;属于凯撒密码的一种变体. 拓展&#xff1a;ROT&#xff08;Rotate&#xff09;编码是一种替换…