C++运算符重载、类的转换构造函数和类型转换函数的基础练习
练习1:(困难)
建立一个矩阵类,可以完成指定的操作或运算。
说明:
(1)、矩阵为2行3列,基类型为整型;
(2)、操作或运算:初始化(>>)、输出(<<)、赋值(=)、两个同类型矩阵的相加(+)、矩阵前置自增(++,即所有元素都加1)、矩阵后置自增(++,即所有元素都加1)、一个整数乘矩阵(*,即该整数乘以每个元素)、矩阵乘一个整数(*,即每个元素乘以该整数)。
要求:针对矩阵的各种操作,请先确认使用何种类型函数实现(仅限于成员函数、友元函数,暂不使用转换构造函数和类型转换函数)。
提示:运算符重载一般遵循如下原则:(1)=、[]、()、->必须作为成员函数;(2)<<、>>、类型转换运算符必须作为友元函数;(3)一般将单目运算符和复合运算符重载为成员函数;(4)一般将双目运算符重载为友元函数。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,2,3,4,5,6),b(6,5,4,3,2,1),c,d,e;
int a1=2,a2=3;//用于测试数乘运算时用到的整数
//(1)测试:>>,输入a和b
//a的值如下:
// 1 1 1
// 2 2 2
//b的值如下:
// 3 2 1
// 6 5 4
cout<<"请输入a和b"<<endl;
cin>>a>>b;
cout<<"--------------------------"<<endl;
//(2)测试:<<,输出a和b
//输出结果格式:
//a的值如下:(b与a类似)
// 1 1 1
// 2 2 2
cout<<"a的值如下:"<<endl;
cout<<a<<endl;
cout<<"b的值如下:"<<endl;
cout<<b<<endl;
cout<<"--------------------------"<<endl;
//(3)测试:+,并输出a+b的结果
c=a;
cout<<"a+b的结果如下:"<<endl;
cout<<a+b<<endl;
cout<<"--------------------------"<<endl;
a = c;
//(4)测试:=,将a赋给c,并输出c
cout<<"执行c=a之后,c的值如下:"<<endl;
c=a;
cout<<c;
cout<<"--------------------------"<<endl;
//(4)测试:整数左乘矩阵,计算a1*c并输出
a=c;
cout<<"测试整数左乘矩阵"<<endl;
cout<<"整数为:"<<a1<<endl;
cout<<"矩阵为:"<<endl<<c;
cout<<"整数左乘矩阵结果如下:"<<endl;
cout<<a1*c;
c=a;
cout<<"--------------------------"<<endl;
//(5)测试:整数右乘矩阵,计算c*a2并输出
cout<<"测试整数右乘矩阵"<<endl;
cout<<"整数为:"<<a2<<endl;
cout<<"矩阵为:"<<endl<<c;
cout<<"整数右乘矩阵结果如下:"<<endl;
cout<<c*a2;
cout<<"--------------------------"<<endl;
//(6)测试:前置自增++,计算d=++c并输出
c=a;
cout<<"测试前置自增++"<<endl;
cout<<"c的初始值如下:"<<endl;
cout<<c;
cout<<"d=++c执行之后结果如下:"<<endl;
d=++c;
cout<<"c的结果如下:"<<endl;
cout<<c;
cout<<"d的结果如下:"<<endl;
cout<<d;
cout<<"--------------------------"<<endl;
//(7)测试:后置自增++,计算e=c++并输出
cout<<"测试后置自增++"<<endl;
cout<<"c的初始值如下:"<<endl;
c=a;
cout<<c;
cout<<"e=c++执行之后结果如下:"<<endl;
e=c++;
cout<<"c的结果如下:"<<endl;
cout<<c;
cout<<"e的结果如下:"<<endl;
cout<<e;
cout<<"--------------------------"<<endl;
return 0;
}
示例如下:(答案不唯一)
练习2:(中等偏上)
建立一个矩阵类,可以完成指定的操作或运算。(转换构造函数的使用)
说明:
(1)、矩阵为2行3列,基类型为整型;
(2)、操作或运算:输出(<<)、标准类型(int)与矩阵对象相加(+)且满足交换律(使用转换构造函数完成)。加法规则说明:指整数与矩阵中每一个元素相加,相加结果为矩阵。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,1,1,2,3,4),b,c;
int m=2;
cout<<"(1)测试:矩阵+数:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"a+m的结果为:"<<endl;
b=a+m;
cout<<b;
cout<<"(2)测试:数+矩阵:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"m+a的结果为:"<<endl;
c=m+a;
cout<<c;
return 0;
}
示例如下:(答案不唯一)
练习3:(中等)
建立一个矩阵类,可以完成指定的操作或运算。(类型转换函数)
说明:
(1)、矩阵为2行3列,基类型为整型;
(2)、操作或运算:输出(<<)、标准类型(int)与矩阵对象相加且满足交换律(使用类型转换函数完成)。加法规则说明:指整数与矩阵中每一个元素相加, 相加结果为整数。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,1,1,2,3,4);
int m=2,b,c;
cout<<"(1)测试:矩阵+数:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"a+m的结果为:"<<endl;
b=a+m;
cout<<b<<endl;//输出一个整数
cout<<"(2)测试:数+矩阵:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"m+a的结果为:"<<endl;
c=m+a;
cout<<c<<endl;//输出一个整数
return 0;
}
示例如下:(答案不唯一)
相关文章:
C++运算符重载、类的转换构造函数和类型转换函数的基础练习
练习1:(困难) 建立一个矩阵类,可以完成指定的操作或运算。 说明: (1)、矩阵为2行3列,基类型为整型; (2)、操作或运算:初始化&…...
第一天 Linux驱动程序简介
目录 一、驱动的作用 二、裸机驱动 VS linux驱动 1、裸机驱动 2、linux驱动 三、linux驱动位于哪里? 四、应用编程 VS 内核编程 1、共同点 2、不同点 五、linux驱动分类 1、字符设备 2、块设备 3、网络设备 六、Linux驱动学习难点与误区 1、学习难点 …...
408 计算机网络 知识点记忆(1)
前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 核心知识记忆点 计算机网络&a…...
scala简介和基础语法
Scala简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。Scala 源代码被编译成 Java 字节码,所以它可…...
[特殊字符] Hyperlane:Rust 高性能 Web 框架的终极选择 [特殊字符]
🔥 Hyperlane:Rust高性能Web框架的终极选择 🔥 📈 性能封神:32万QPS碾压群雄 在1000并发压测中,Hyperlane以307,568.90 req/s的恐怖QPS稳居Rust生态第一,甚至超越Tokio框架!开启Kee…...
树莓派超全系列文档--(13)如何使用raspi-config工具其二
如何使用raspi-config工具其二 raspi-configPerformance optionsOverclockGPU memoryOverlay file systemFan Localisation optionsLocaleTime zoneKeyboardWLAN country Advanced optionsExpand filesystemNetwork interface namesNetwork proxy settingsBoot orderBootloader…...
瑞芯微 RKrga接口 wrapbuffer_virtualaddr 使用笔记
一、源码 官方在librga中给了很多 demo 以供参考,例如 imresize 操作: /** Copyright (C) 2022 Rockchip Electronics Co., Ltd.* Authors:* YuQiaowei <cerf.yurock-chips.com>** Licensed under the Apache License, Version 2.0 (the &qu…...
管理系统-接口信息
1.用户查询接口 1.1 查询所有用户 请求路径:GET /users 接口描述:查询所有用户的基本信息及关联的角色、应用数据。 请求参数:无 响应数据:{"code": 1,"msg": "success","data": [{&qu…...
java项目之基于ssm的乡镇自来水收费系统(源码+文档)
项目简介 乡镇自来水收费系统实现了以下功能: 乡镇自来水收费系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员管理水表,审核用户更换…...
基于高德地图实现地图交互功能的探索与总结
在前端开发项目中,集成地图功能并实现丰富的交互效果是一项具有挑战性但又极具实用价值的任务。最近,我在项目里负责实现基于高德地图的相关功能,包括地图初始化、输入提示、点击获取经纬度及地址等操作。在这个过程中,遇到了不少…...
代码随想录算法训练营--打卡day4
一.移除链表元素 1.题目链接 203. 移除链表元素 - 力扣(LeetCode) 2.思路 通过 while 循环来遍历链表,只要 cur 的下一个节点不为空,就继续循环。在循环中,对 cur 的下一个节点的值进行判断: 值不等于…...
【题解】AtCoder At_abc399_d [ABC399D] Switch Seats
题目大意 请点击 这里 查看原题面。 有一个长度为 2 ⋅ N 2\cdot N 2⋅N 的序列 A A A,其中 1 , 2 , … , N 1,2,\dots,N 1,2,…,N 各出现了两次。现在要找满足如下条件的数对 ( a , b ) (a,b) (a,b) 的个数: a a a 的两次出现不相邻。 b b b 的两…...
【力扣刷题|第十七天】0-1 背包 完全背包
目标和 力扣题目网址:目标和 这道题我们先用回溯的思想来做。首先我们设正数和为S,数组和为N,目标值为T,那么S-(N-S)T化简之后可以得S(TN)/2即选择的正数个数为偶数,而且NT也为偶数,那么第一个判断条件我们就有了&…...
实时目标检测新突破:AnytimeYOLO——随时中断的YOLO优化框架解析
目录 一、论文背景与核心价值 二、创新技术解析 2.1 网络结构革新:Transposed架构 2.2 动态路径优化算法 三、实验结果与性能对比 3.1 主要性能指标 3.2 关键发现 四、应用场景与部署实践 4.1 典型应用场景 4.2 部署注意事项 五、未来展望与挑战 一、论文背景与核心…...
Spring中的IOC及AOP概述
前言 Spring 框架的两大核心设计思想是 IOC(控制反转) 和 AOP(面向切面编程)。它们共同解决了代码耦合度高、重复逻辑冗余等问题。 IOC(控制反转) 1.核心概念 控制反转(Inversion of Control…...
为mariadb和mysql添加用户和修改密码的方法
一、查看MariaDB中的用户 步骤1:登录MariaDB sudo mysql -u root -p # 使用root账户登录(输入密码) 步骤2:查询用户列表 -- 切换到mysql系统数据库 USE mysql; -- 查看所有用户及其主机权限 SELECT User, Host FROM user; 输出…...
2025年3月电子学会c++五级真题
结绳 #include <bits/stdc.h> using namespace std;int n,a[10010];int main() {cin>>n;for(int i 0;i<n;i){cin>>a[i];}sort(a0,an);//将a数组从小到大排序double sum 0;for(int i 0;i<n;i){sum (suma[i])/2;}cout<<(int)sum;return 0; } 最…...
JSP 指令
JSP 指令 概述 JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现动态内容的生成。JSP指令是JSP页面中用于设置整个页面属性的特殊标记,它们对整个JSP页面或部分页面进行配置…...
RabbitMQ高级特性--发送方确认
目录 1. confirm确认模式 1.配置RabbitMQ 2.设置确认回调逻辑并发送消息 2.Return退回模式 1.配置RabbitMQ 2.设置返回回调逻辑并发送消息 在使用RabbitMQ的时候, 可以通过消息持久化来解决因为服务器的异常崩溃而导致的消息丢失, 但是还有⼀个问题, 当消息的生产者将消息发送出…...
AUTOSAR_StbM_详解
AUTOSAR同步时基管理器(StbM)详解 基于AUTOSAR规范对StbM模块架构与功能的全面解析 目录 AUTOSAR同步时基管理器(StbM)详解 目录1. 概述 1.1 StbM的功能与用途1.2 StbM的主要用例2. 组件架构 2.1 StbM组件架构图2.2 组件交互说明 2.2.1 客户类型2.2.2 内部组件2.2.3 外部接口3.…...
扩散模型总结
目录 定义与原理 发展历程 正向扩散过程 反向扩散过程 噪声预测网络 离散时间模型 连续时间模型 条件扩散模型 生成质量 训练稳定性 采样灵活性 图像生成 音频合成 文本生成 计算效率 模型复杂度 定义与原理 扩散模型是一种新型的生成模型,其核心原理源于热力…...
RCE--解法
目录 一、利用php伪协议 1.代码分析 2.过程 3.结果 编辑 4.防御手段 二、RCE(php中点的构造) 1.代码分析 2.过程 一、利用php伪协议 <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag|system|php|cat|sort…...
Kubernetes》k8s》Containerd 、ctr 、cri、crictl
containerd ctr crictl ctr 是 containerd 的一个客户端工具。 crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。 ctr -v 输出的是 containerd 的版本, crictl -v 输出的是当前 k8s 的版本&#x…...
OpenCV 图形API(2)为什么需要图形API?
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 G-API背后的动机 G-API模块为OpenCV带来了基于图的执行模型。本章简要描述了这种新模型如何在两个方面帮助软件开发者:优化和移植图像处理算法…...
测试模版12
本篇技术博文摘要 🌟 引言 📘 在这个变幻莫测、快速发展的技术时代,与时俱进是每个IT工程师的必修课。我是盛透侧视攻城狮,一名什么都会一丢丢的网络安全工程师,也是众多技术社区的活跃成员以及多家大厂官方认可人员&a…...
Epoll 的本质与原理:高性能网络编程的基石
Epoll 的本质与原理:高性能网络编程的基石 在当今高并发的网络应用中,如何高效地处理大量的并发连接是每个开发者都需要面对的关键问题。Linux 系统提供的 epoll 技术正是解决这一问题的利器,被广泛应用于 Nginx、Redis、Skynet 等高性能网络…...
Tesseract OCR技术初探(Python调用)
一、Tesseract OCR技术解析 1.1 核心架构与发展历程 Tesseract是由HP实验室于1985年研发的光学字符识别引擎,2005年由Google开源并持续维护至今。其核心技术经历了三个阶段演进: 传统模式(v3.x):基于特征匹配算法&a…...
黑盒测试的测试用例构成的八点要素
测试用例: 是为测试项目而设计的执行文档 作用: 防止漏测实施测试的标准 编写格式: 用例编号:项目 模块 编号用例标题:预期结果(测试点)模块/项目:所属项目或模块优先级:表示用例的重要程度或者影响力P0~p4(P0最高)前置条件:要执行此条用例…...
手撕string
目录 引言 1,成员变量 2,先建一个可以跑的 2_1,构造函数 2_2, 扩容函数reserve 2_3,push_back 2_4,append[ ] 2_5,operator << 2_6,测试一下,看猪跑 3&…...
12款星光闪光污迹艺术绘画效果Clip Studio Paint笔刷画笔+闪光纹理图片 Clip Studio Glitter Texture Brushes
这 12 种 Clip Studio 画笔 额外的闪光纹理包含闪光、污迹、星光和闪亮的斑点,为您的艺术增添额外的流行感。想想闪光胶,但已经长大了(而且更好)。想象一下:无论您是用微小的闪光还是厚实的微光涂鸦,都有适…...
5G_WiFi_CE_杂散测试
目录 一、规范要求 1、法规目录: 2、限值: (1)带外发射杂散 (2)带内发射杂散 (3)接收杂散 二、测试方法 1、带外发射杂散 (1)测试条件 (…...
蓝卓为中小制造企业注入数字化转型活力
随着劳动力成本上升,原材料价格上涨,企业生产成本逐年增加,市场竞争越来越激烈,传统的中小制造企业面临着巨大的压力。 通过数字化转型应对环境的变化已成为行业共识,在数字化的进程中,中小企业首要考虑生存问题,不能…...
集成 shardingsphere-jdbc 常见问题
一、报错内容 Caused by: org.apache.ibatis.executor.ExecutorException: Error preparing statement. Cause: org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException: Table or view t_xxx does not exist. 解决 1、配置 !SHARDING rules:-…...
DeepSeek接入飞书多维表格,效率起飞!
今天教大家把DeepSeek接入飞书表格使用。 准备工作:安装并登录飞书;可以准备一些要处理的数据,确保数据格式正确,如 Excel、CSV 等,也可直接存储到飞书多维表格。 创建飞书多维表格:打开飞书,点…...
AI来了,新手如何着手学习软件开发?
AI时代新手学习软件开发的7步进化指南 (附具体工具与避坑策略) 一、建立“人机协作”学习观 AI是教练,不是替身 正确姿势:用AI辅助理解概念(如让DeepSeek 、ChatGPT用生活案例解释递归),但坚持手…...
sqli-labs靶场 less5
文章目录 sqli-labs靶场less 5 报错注入 sqli-labs靶场 每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。 sql注入的基本步骤 注入点注入类型 字符型:判断闭合方式 (‘、"、’、“”…...
AI基础02-图片数据采集
上篇文章我们学习了文本的数据采集,今天主要了解一下图片数据采集的方法。图片采集方法通常有网页采集和实时采集(传感器采集)两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行图片数据的实时采集。 1)cv2库简介 …...
QT音乐播放器(1):数据库保存歌曲
实现功能:用数据库保存本地导入和在线搜索的歌曲记录 目录 一. 保存本地添加的歌曲 1. 使用QSettings (1)在构造函数中,创建对象。 (2)在导入音乐槽函数中,保存新添加的文件路径,…...
Java面试黄金宝典22
1. 树的中序遍历,除了递归和栈还有什么实现方式 定义 Morris 遍历是一种用于二叉树遍历的算法,它利用树中大量空闲的空指针,在不使用额外栈空间和递归的情况下,完成树的遍历。通过建立临时的线索连接,使得可以按照中…...
英伟达GB300新宠:新型LPDDR5X SOCAMM内存
随着人工智能(AI)、机器学习(ML)和高性能计算(HPC)应用的快速发展,对于高效能、大容量且低延迟内存的需求日益增长。NVIDIA在其GB系列GPU中引入了不同的内存模块设计,以满足这些严格…...
验证Linux多进程时间片切换的程序
一、软件需求 在同时运行多个CPU密集型进程时,需采集以下统计信息: 当前运行在逻辑CPU上的进程ID每个进程的运行进度百分比 实验程序设计要求: 1. 命令行参数 参数说明示例值n并发进程数量3total总运行时长(毫秒&…...
Linux学习笔记(应用篇四)
基于I.MX6ULL-MINI开发板 输入设备tslib库 输入设备 触摸屏 触摸屏设备是绝对位移设备可以上报绝对位移事件 触摸可分为单触摸和双触摸 BTN_TOUCH :按压触摸屏和松开会触发上报,滑动时不会 单触摸上报事件 ABS_X: X 轴绝对位移坐标值 ABS_Y…...
linux基本命令(1)--linux下的打包命令 -- tar 和gzip
tar 解压 ,打包 语法:tar [主选项辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。 主选项: c 创建新的档案文件。如果用户想备…...
【Linux内核系列】:文件ELF格式详解
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: “人生没有白走的路,你踩过的荆棘、蹚过的泥泞,都会在某一刻,变成你脚下的风。” ★★★ 本文前置…...
CubeMx ——新建工程
新建工程 选择芯片 设置主频 选择调试口 选择晶振口 设置 GPIO 输出 工程设置 LED 闪烁 /* USER CODE BEGIN WHILE */while (1){HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_10);HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */...
使用postcss-px-to-viewport-8-plugin将页面转响应式
使用postcss-px-to-viewport-8-plugin将页面转响应式 背景 公司最近接了个项目,其中要求部分页面在移动端正常显示,第一方案是使用响应式,但是设计稿最后出的和Web端差别较大同时两端的功能不是完全对齐的,所以决定使用两个模块…...
Java---类与对象
类与对象 前言:一、面向对象二、类的定义1.类的定义格式2.访问修饰限定符 三、类的实例化四、this引用1.this引用2.this引用的原因 五、对象的构造和初始化1.初始化对象2.构造方法(1).构造方法的概念:(2).特性:(3).this调用:3.就地初始化4.默…...
告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验
告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验 哈喽小伙伴们好,我是Stark-C~ 先如今,家里的电子产品越来越多,手机、平板、电脑三件套已经是基础配置,还有相机、Switch、智能手表等,这些产品用…...
基于springboot+vue的农产品电商平台
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0
问题描述: 从日志看出,dom0运行android_kernel,刚开始运行就会crash,引发panic 解决及其原因分析: 最终问题得到解决,发现是前期在调试汇编阶段代码时,增加了汇编打印的指令,注释掉这些指令,问题得到解决。…...