【C++ Primer Plus习题】13.4

news2024/11/24 14:30:33

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

问题:

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

解答:
main.cpp

#include <iostream>

#include "port.h"

int main() {
	Port p1;
	Port p2("Abc", "Bcc", 30);
	std::cout << p1 << std::endl<<endl;
	std::cout << p2 << std::endl << endl;
	Port p3 = p2;
	p3.Show();
	p3 += 3;
	p3.Show();
	Port p4 = p2;
	p3 -= 2;
	p3.Show();
	cout << endl;

	VintagePort vp1("Vabc", 50, "hn", 1983);
	vp1.Show();
	cout << endl;
	VintagePort vp2;
	vp2.Show();
	cout << endl;
	vp1 -= 3;
	vp2 = vp1;
	std::cout << vp2 << std::endl;

	return 0;
}

port.h

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

class Port
{
private:
	char* brand;
	char style[20];
	int bottles;
public:
	Port(const char* br = "none", const char* st = "none", int b = 0);
	Port(const Port& p);
	virtual ~Port() { delete[] brand; }
	Port& operator=(const Port& p);
	Port& operator+=(int b);
	Port& operator-=(int b);
	int BottleCount()const { return bottles; }
	virtual void Show()const;
	friend ostream& operator<<(ostream& os, const Port& p);
};

class VintagePort :public Port
{
private:
	char* nickname;
	int year;
public:
	VintagePort();
	VintagePort(const char*br,int b,const char*nn,int y);
	VintagePort(const VintagePort&vp);
	~VintagePort() { delete[] nickname; }
	VintagePort& operator=(const VintagePort&vp);
	void Show()const override;
	friend ostream& operator<<(ostream& os, const VintagePort& vp);
};

port.cpp

#include "port.h"

Port::Port(const char* br, const char* st, int b)
{
	brand = new char[strlen(br) + 1];
	strcpy_s(brand, strlen(br) + 1, br);
	strcpy_s(style, strlen(br) + 1, st);
	bottles = b;
}
Port::Port(const Port& p)
{
	brand = new char[strlen(p.brand) + 1];
	strcpy_s(brand, strlen(p.brand) + 1, p.brand);
	strcpy_s(style, strlen(p.style) + 1, p.style);
	bottles = p.bottles;
}
Port& Port::operator=(const Port& p)
{
	if (this == &p)return *this;
	if (brand)delete[] brand;
	brand = new char[strlen(p.brand) + 1];
	strcpy_s(brand, strlen(p.brand) + 1, p.brand);
	strcpy_s(style, strlen(p.style) + 1, p.style);
	bottles = p.bottles;
	return *this;
}
Port& Port::operator+=(int b)
{
	this->bottles += b;
	return *this;
}
Port& Port::operator-=(int b)
{
	this->bottles -= b;
	return *this;
}
void Port::Show()const
{
	cout << "Brand:" << this->brand << endl;
	cout << "Kind:" << this->style << endl;
	cout << "Bottles:" << this->bottles << endl;
}
ostream& operator<<(ostream& os, const Port& p)
{
	os << p.brand << "," << p.style << "," << p.bottles;
	return os;
}


VintagePort::VintagePort():Port()
{
	nickname = new char[1];
	nickname[0] = '\0';
	year = 0;
}
VintagePort::VintagePort(const char* br, int b, const char* nn, int y):Port(br,"none",b)
{
	nickname = new char[strlen(nn) + 1];
	strcpy_s(nickname, strlen(nn) + 1, nn);
	year = y;
}
VintagePort::VintagePort(const VintagePort& vp):Port(vp)
{
	nickname = new char[strlen(vp.nickname) + 1];
	strcpy_s(nickname, strlen(vp.nickname) + 1, vp.nickname);
	year = vp.year;
}
VintagePort& VintagePort::operator=(const VintagePort& vp)
{
	if (this == &vp)return *this;
	if (nickname)delete[] nickname;
	Port::operator=(vp);
	nickname = new char[strlen(vp.nickname) + 1];
	strcpy_s(nickname, strlen(vp.nickname) + 1, vp.nickname);
	year = vp.year;
	return *this;
}
void VintagePort::Show()const
{
	Port::Show();
	cout << "nickname:" << nickname << endl;
	cout << "year:" << year << endl;
}
ostream& operator<<(ostream& os, const VintagePort& vp)
{
	os << (const Port&)vp << "," << vp.nickname << "," << vp.year << endl;
	return os;
}

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

考查点:

  • 继承
  • 虚函数

2024年9月9日16:05:29

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

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

相关文章

奔驰 GLS450:后排电动遮阳帘升级,畅享私密与舒适

奔驰 GLS450&#xff1a;后排电动遮阳帘升级&#xff0c;畅享私密与舒适 奔驰 GLS450&#xff0c;作为豪华 SUV 的典范&#xff0c;一直致力于为乘客提供顶级的驾乘体验。此次升级后排电动遮阳帘&#xff0c;更是将舒适与私密提升到了新的高度。 升级后的电动遮阳帘&#xff…

第12章 第9节 Web应用测试(软件评测师)

1.web应用系统负载压力测试中&#xff0c;&#xff08;并发请求数&#xff09;不是衡量业务执行效率的指标。 【解析】并发请求数是考核系统能够承受的负载&#xff0c;交易执行吞吐量、交易执行相应时间、每秒点击率是衡量业务执行效率的指标 2.用户访问某web网站&#xff0…

你可能不知道的Activity启动的诡异现象探索

你可能不知道的Activity启动的诡异现象探索 这篇文章主要记录一下遇到的android启动过程中的一个有意思的探索过程&#xff0c;可能文章会比较长&#xff0c;相信我只要读下去一定会有所收获。这里说明一下&#xff0c;这篇文章肯定会涉及到activity的启动流程&#xff0c;很多…

JAVA社交新潮流同城组局搭子不愁系统小程序源码

社交新潮流——同城组局&#xff0c;搭子不愁系统 &#x1f389;【潮流前沿&#xff0c;社交新风向】&#x1f389; 在这个快节奏的城市生活中&#xff0c;你是否常常感到周末无聊&#xff0c;想找点乐子却苦于没有合适的搭子&#xff1f;别担心&#xff0c;今天我要给大家安…

【最经典的79个】软件测试面试题(内含答案)备战“金九银十”

001.软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件 输入数据 执行步骤 预期结果 0002.问&…

RPG经典设计逻辑——DD系统简单拆解

RPG经典设计逻辑——D&D系统简单拆解 作为TGA2023年度游戏&#xff0c;身披数十项奖项及提名的《博德之门3》&#xff0c;近日又获得了2024雨果奖“最佳游戏或交互式作品”的奖项。“雨果奖”之名源于“科幻杂志之父”雨果・根斯巴克&#xff0c;是科幻及奇幻领域最负盛名…

Mysql高阶语句(2)

Mysql视图&#xff1a;优化操作与安全方案 概述&#xff1a; 视图&#xff08;View&#xff09;是数据库中的一种虚拟表&#xff0c;虽然不包含实际数据&#xff0c;但可以映射真实数据&#xff0c;像是数据库表的镜花水月或倒影。视图会动态地保存结果集的数据&#xff0c;使…

springboot邮件发送的方式?如何配置服务?

Springboot邮件发送的优化策略&#xff1f;Springboot发信技巧&#xff1f; Spring Boot作为一个流行的Java框架&#xff0c;提供了简单而强大的方式来实现邮件发送功能。AokSend将详细介绍Spring Boot邮件发送的方式&#xff0c;帮助开发者快速掌握这一技能。 SpringBoot邮件…

跟我一起学Python编程(五),变量的定义和使用

今天给大家介绍一下Python变量的定义和使用&#xff0c;我们要使用编程语言去做一件事情&#xff0c;一定要使用到变量。 什么是变量&#xff1f; 在Python中&#xff0c;变量可以用来存储各种类型的数据&#xff0c;如数字&#xff0c;文本&#xff08;称为字符串&#xff09…

云计算之大数据(上)

目录 一、Elasticsearch 1.1 产品组件 1.1.1 X-Pack 1.1.2 Beats数据采集中心 1.1.3 Logstash 1.1.4 Kibana 1.2 架构特性 1.2.1 性能 1.2.2 安全性 1.2.3 可用性 1.2.4 可扩展性 1.2.5 可维护性 1.2.6 国际化 1.3 综合检索分析 1.4 全观测 1.5 大数据检索加速…

遗传算法与深度学习实战(5)——遗传算法中常用遗传算子

遗传算法与深度学习实战&#xff08;5&#xff09;——遗传算法中常用遗传算子 0. 前言1. 常用选择算子1.1 轮盘选择 (roulette wheel selection)1.2 随机遍历抽样 (Stochastic universal sampling, SUS)1.3 排序选择 (rank-based selection)1.4 适应度缩放选择&#xff08;Fit…

无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了

智慧工业视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用户只需在界面上…

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型&#xff0c;并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络 谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络&#xff1a;谱图卷积网…

软件测试学习笔记丨接口测试用例设计

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32078 一、简介 接口测试在需求分析完成之后&#xff0c;即可设计对应的接口测试用例&#xff0c;然后根据用例进行接口测试。接口测试用例的设计&#xff0c;也需要用到黑盒测试用例的设计方…

​数据链路层——流量控制可靠传输机制 ​

https://www.cnblogs.com/nekodream/p/18048072 数据链路层的流量控制 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。 数据链路层的流量控制是点对点的&#xff0c;而传输层的流量控制是端到端的。 数据链路层流量控制…

UEFI——Variable的使用

一、Variable简介 Variable Services是Runtime Services的一部分&#xff0c;提供关于variable的一些服务&#xff0c;Variable被定义为键值对&#xff0c;由标识信息加上属性&#xff08;键&#xff09;和任意数据&#xff08;值&#xff09;组成。用在固件部内部和固件与操作…

JAVA工具----自动化API文档APIFOX

前言&#xff1a;想必大家在后端开发的过程过&#xff0c;最烦的就是写接口文档了。然而如果是对接前写&#xff0c;就更加烦躁&#xff0c;可能之前写好的接口文档全都要改&#xff0c;还会占用大量的时间&#xff0c;一般的小团队也耗不起这样的费时。那么使用Swagger和侵入式…

如何查询小红书、抖音等多平台品牌声量数据?

现在很多企业都需要掌握小红书、抖音、公众号、微博等各个社媒平台上&#xff0c;企业品牌声量趋势情况&#xff0c;行业内容占有率如何&#xff0c;搜索指数高低等等&#xff0c;借此来判断企业的品牌影响力、行业地位以及最近的活动/事件等营销效果。那么跨平台查询是比较麻烦…

一篇清楚的明白什么是场外个股期权?

今天带你了解一篇清楚的明白什么是场外个股期权&#xff1f;场外个股期权是一种非标准化的期权合约&#xff0c;在金融机构和投资者之间定制进行。它具有更大的灵活性&#xff0c;但也伴随着较高的信用风险和复杂性。适用于对冲风险、增强收益和设计结构性产品等多种策略。 场…

提取音频转mp3的工具哪个好?这六个新手必备

各位音乐爱好者们&#xff01;是不是有时候你会听到一首歌&#xff0c;觉得它的中间伴奏简直太棒了&#xff0c;想要把它单独提取出来&#xff0c;却发现无从下手呢&#xff1f; 别担心&#xff0c;现在有了提取音频在线工具&#xff0c;这些难题都能迎刃而解。下面&#xff0…