当前位置: 首页 > news >正文

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.dtcms.com/a/98885.html

相关文章:

  • 【SPP】蓝牙串口协议应用层深度解析:从连接建立到实战开发
  • 解决Dubbo3调用Springcloud接口报No provider available from registry RegistryDirectory
  • 【java基础】Java 泛型
  • IPv6 Over IPv4 自动 6to4 隧道
  • Altium Designer——同时更改多个元素的属性(名称、网络标签、字符串标识)
  • OpenBMC:BmcWeb 生效路由5 优化trie
  • Unity高渲染管线
  • 经济均衡问题建模与求解:单一市场供需平衡分析
  • 蓝桥杯单片机刷题——E2PROM记录开机次数
  • R CSV 文件处理指南
  • 项目如何安装本地tgz包并配置局部registry
  • NixVis 开源轻量级 Nginx 日志分析工具
  • 鸿蒙开发:了解Canvas绘制
  • [C++项目]高并发内存池性能测试
  • 音乐推荐系统的研究与应用
  • JAVA学习*单列模式
  • Linux进程状态补充(10)
  • 18-动规-子序列中的 k 种字母(中等)
  • Python --- .flush() 强制输出缓冲区的数据(缓冲区未满)
  • 代码随想录算法训练营--打卡day3
  • HTML元素小卖部:表单元素 vs 表格元素选购指南
  • 从零开始研发GPS接收机连载——19、自制GPS接收机的春运之旅
  • 《Spring Cloud Eureka 高可用集群实战:从零构建高可靠性的微服务注册中心》
  • 【RabbitMQ】Linux上安装RabbitMQ详细步骤
  • 全球化2.0 | ZStack举办香港Partner Day,推动AIOS智塔+DeepSeek海外实践
  • 嵌入式libc
  • [创业之路-344]:战略的本质是选择、聚焦, 是成本/效率/低毛利优先,还是差易化/效益/高毛利优先?无论是成本优先,还是差易化战略,产品聚焦是前提。
  • 基于HTML5和CSS3实现3D旋转相册效果
  • linux课程学习二——缓存
  • JAVA的内存图理解