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;

}

示例如下:(答案不唯一)

 

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

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

相关文章

PERL开发环境搭建>>Windows,Linux,Mac OS

特点 简单 快速 perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快 灵活 借鉴了C/C, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能 开源.免费 没有&qu…

docker(2) -- 启动后修改目录和网络

1. 前言 docker启动前是image文件&#xff0c;启动后是container文件&#xff0c;启动的时候我们可以指定容器的挂载目录以及网络类型&#xff0c;但启动后&#xff0c;这些信息都以配置文件的形式保存在container中&#xff0c;container重新启动时无法重新指定这些信息&…

Flutter开发中如何避免UI显示溢出的问题

文章目录 1. 使用灵活的布局组件2. 允许内容滚动3. 处理文本溢出4. 检查父容器约束5. 使用自适应布局6. 调试工具7. 其他技巧总结 在 Flutter 开发中&#xff0c;UI 溢出&#xff08;如 A RenderFlex overflowed 错误&#xff09;通常是由于布局空间不足或子组件尺寸超出父容器…

使用FastExcel时的单个和批量插入的问题

在我们用excel表进行插入导出的时候&#xff0c;通常使用easyexcel或者FastExcel&#xff0c;而fastexcel是easy的升级版本&#xff0c;今天我们就对使用FastExcel时往数据库插入数据的业务场景做出一个详细的剖析 场景1 现在我们数据库有一张组织表&#xff0c;组织表的字段…

【力扣刷题|第十七天】0-1 背包 完全背包

目标和 力扣题目网址:目标和 这道题我们先用回溯的思想来做。首先我们设正数和为S&#xff0c;数组和为N&#xff0c;目标值为T&#xff0c;那么S-(N-S)T化简之后可以得S(TN)/2即选择的正数个数为偶数&#xff0c;而且NT也为偶数&#xff0c;那么第一个判断条件我们就有了&…

深入浅出 Embedding

1. 什么是 Embedding? Embedding(嵌入)是一种将高维数据映射到低维连续空间的技术,用于表达数据的语义关系。简单来说,它是一种向量化表示,将文本、图像、用户行为等信息转换为数值向量,使得相似的数据在向量空间中距离更近。 2. 如何理解 Embedding? 2.1 浅显易懂的…

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建,Fabric 模组详细搭建教程

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建&#xff0c;Fabric 模组详细搭建教程 一、 服务器介绍二、安装 JDK 21三、搭建 Minecraft 服务端四、本地测试连接五、如何添加模组&#xff08;mods&#xff09;六、添加服务&#xff0c;并设置开…

【MLP-BEV(10)】BEVPooling V1和BEVPooling V2的view_transformer,进行鱼眼图片实践

文章目录 先说说 BEVPoolv1步骤1:3D点生成步骤2 2D特征采样和BEV特征生成特点再谈谈BEVPoolv2步骤1:3D点生成步骤2: 计算索引关系步骤3: `voxel_pooling`计算鱼眼图片进行实践步骤1、3D点生成(基于Kannala-Brandt 进行调整)步骤2、2D特征采样和BEV特征生成(1) 体素化 (Voxe…

鸿蒙项目源码-天气预报app-原创!原创!原创!

鸿蒙天气预报项目源码包运行成功含文档ArkTS语言。 我半个月写的原创作品&#xff0c;请尊重原创。 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01;&#xff01; 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01;&#xff01; 原创作品…

告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验

告别桌面杂乱与充电焦虑&#xff0c;移速165W百变桌面充电站首发体验 哈喽小伙伴们好&#xff0c;我是Stark-C~ 先如今&#xff0c;家里的电子产品越来越多&#xff0c;手机、平板、电脑三件套已经是基础配置&#xff0c;还有相机、Switch、智能手表等&#xff0c;这些产品用…

skill插件教程——skill程序的组成以及调用方法

skill程序的基本组成 1、基础的程序文件 插件运行的基础——就是你写程序的文件&#xff0c;格式为il文件&#xff0c;就是文本文件格式 2、调用程序的文件——allegro.ilint 文件申明在那个位置——在这个文件夹下&#xff0c;写入你调用的函数。 例如load&#xff08;“…

解决Dubbo3调用Springcloud接口报No provider available from registry RegistryDirectory

解决Dubbo调用Springcloud接口报No provider available from registry RegistryDirectory 问题发现问题解决 问题发现 在学习Dubbo过程中&#xff0c;Dubbo官网有一篇文章《微服务最佳实践&#xff0c;零改造实现 Spring Cloud & Apache Dubbo 互通》&#xff0c;跟着示例…

基于RFID技术建筑物资材料智能管理解决方案

建筑行业仓库和物资材料管理面临诸多挑战&#xff0c;如工程设备重复利用的管理需求、物资出入库管理不规范、账物不符、物资丢失等问题。特别是在复杂多变的工地环境中&#xff0c;对物资进行科学规范的管理难度极大。上海岳冉基于RFID技术的建筑物资材料智能管理解决方案聚焦…

WSL系统找不到指定的文件

问题介绍 在尝试使用linux子系统时&#xff0c;发现无法打开 在尝试使用docker时无法使用 在命令行cmd或者powershell使用wls相关命令时&#xff0c;报错 相关错误提示均为&#xff1a; 系统找不到指定的文件 解决方法 试了各种方法无效。 直接到github下载最新版的wsl安装…

海量数据处理

1.海量数据处理问题 给两个文件&#xff0c;分别有100亿个query&#xff0c;只有1G内存&#xff0c;如何找到两个文件交集&#xff1f; 解决方案一&#xff1a; 可以先用布隆过滤器&#xff0c;一个文件的query放进布隆过滤器&#xff0c;另一个文件依次查找&#xff0c;在的…

英伟达GB300新宠:新型LPDDR5X SOCAMM内存

随着人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;和高性能计算&#xff08;HPC&#xff09;应用的快速发展&#xff0c;对于高效能、大容量且低延迟内存的需求日益增长。NVIDIA在其GB系列GPU中引入了不同的内存模块设计&#xff0c;以满足这些严格…

PC名词解释-笔记本的S0,S1,S2,S3,S4,S5状态

​&#x1f393;作者简介&#xff1a;程序员转项目管理领域优质创作者 &#x1f48c;个人邮箱&#xff1a;[2707492172qq.com] &#x1f310;PMP资料导航&#xff1a;PM菜鸟&#xff08;查阅PMP大纲考点&#xff09; &#x1f4a1;座右铭&#xff1a;上善若水&#xff0c;水善利…

群体智能优化算法-算术优化算法(Arithmetic Optimization Algorithm, AOA,含Matlab源代码)

摘要 算术优化算法&#xff08;Arithmetic Optimization Algorithm, AOA&#xff09;是一种新颖的群体智能优化算法&#xff0c;灵感来源于加、减、乘、除四种基本算术运算。在优化过程中&#xff0c;AOA 通过乘除操作实现全局探索&#xff0c;通过加减操作强化局部开发&#…

Centos7安装cat美化工具lolcat

Centos7安装cat美化工具lolcat Centos7安装lolcat使用ruby安装lolcat配置cat系统别名 结果验证 Centos7安装lolcat lolcat &#xff1a;一个在Linux 终端中输出彩虹特效的命令行工具 使用ruby安装lolcat # 安装ruby和zip yum install -y ruby# 查看ruby版本 ruby --version# …

vue在线录音系统

说明&#xff1a; 用vue做一款录音系统 1.点击按钮&#xff0c;开始录制音频 2.录制过程中&#xff0c;可以暂停和停止录制 有时长显示 3.点击停止录制 可以保存音频&#xff0c;保存在本地 4.找到刚刚保存的音频路径&#xff0c;可以点击播放 &#xff0c;需要显示音频总时…