【C++】——运算符重载

news2024/12/28 3:40:33

 🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

欢迎收看,希望对大家有用!

目录

🎯第一题:

🎯 第二题:

🎯 第三题:

🎯 答案:

💻第一题:

💻第二题:

💻第三题:

🎯第一题:

设计一个复数类Complex,包含成员变量实部real和虚部imag;运算符重载+/-实现两个复数加、减的功能。在主函数里创建两个复数对象,分别求两个复数的和与差,在主函数里显示运算结果。效果如图:

🎯 第二题:

现有一学生类定义:

   class Student{

         ……..

      private:

int _id;

         string _name;

         char *_addr;

    };

实现学生类的赋值运算符=重载,主函数调用赋值运算符并输出对象信息。

🎯 第三题:

编写一个程序,声明一个2行2列矩阵类Matrix,重载运算符“+”,使之能用于矩阵的加法运算。重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入与输出。从键盘输入两个矩阵a和b,求两个矩阵之和并输出。效果如图:

 

🎯 答案:

💻第一题:

#include <iostream>

using namespace std;

class Complex {

private:

double real;

double imag;

public:

Complex(double x=0,double y=0):real(x),imag(y) {}

void show() const; //输出数据

friend Complex operator+(const Complex& a1, const Complex& a2) ; //重载为类的友元函数

friend Complex operator-(const Complex& a1, const Complex& a2);//重载为类的友元函数

};

/******************************************************************/

void Complex::show() const {

if(imag>=0)

cout<<real<<"+"<<imag<<"i"<<endl;

else

cout<<real<<imag<<"i"<<endl;

}

Complex operator+(const Complex& a1,const Complex& a2) {

return Complex(a1.real+a2.real,a1.imag+a2.imag);

}

Complex operator-(const Complex& a1,const Complex& a2) {

return Complex(a1.real-a2.real,a1.imag-a2.imag);

}

/******************************************************************/

int main() {

Complex c1(5.1,3.4);

Complex c2(3.6,5.3);

Complex c;

cout<<"c1:";

c1.show();

cout<<"c2:";

c2.show();

c=c1+c2;

cout<< "c1+c2:";

c.show();

c=c1-c2;

cout<<"c1-c2:";

c.show();

return 0;

}



💻第二题:

#include <iostream>

#include <cstring>

using namespace std;

class Student {

private:

int _id;

string _name;

char *_addr;

public:

Student(int id,string name,const char *addr);

Student();

Student& operator=(Student& stu);

void show();

};

Student::Student() {}

Student::Student(int id,string name,const char *addr) {

/******************************************/ 

_id=id;

_name=name;

this->_addr=new char[strlen(addr)+1];

if(_addr)     strcpy(_addr,addr);

/******************************************/ 

}

Student& Student::operator=(Student& stu) {

//注意深拷贝

/******************************************/ 

_id=stu._id;

_name=stu._name;

_addr=new char[strlen(stu._addr)+1];

if(_addr)     strcpy(_addr,stu._addr);

return *this;

/******************************************/ 

}

void Student::show() {

cout<<"学号:"<<_id<<endl;

cout<<"姓名:"<<_name<<endl;

cout<<"住址:"<<_addr<<endl;

}

int main() {

Student stu2,stu1(10001,"zhangsan","luoyang");

stu1.show();

stu2=stu1;

stu2.show();

return 0;

}

💻第三题:

#include <iostream>

#include <iomanip>

using namespace std;

class Matrix {

private:

int a[2][2];

friend istream& operator>>(istream& is,Matrix& _m);

friend ostream& operator<<(ostream& os,Matrix& _m);

friend Matrix  operator+(const Matrix& mat1,const Matrix& mat2);

};

ostream& operator<<(ostream& os,Matrix& _m) {

//每个数4列 setw(4)

for(int i=0; i<2; i++) {

for(int j=0; j<2; j++)

os<<setw(4)<<_m.a[i][j];

os<<endl;

}

return os;

}

/****************************************************/

istream& operator>>(istream& is,Matrix& _m) {

for(int i=0; i<2; i++)

for(int j=0; j<2; j++)

is>>_m.a[i][j];

return is;

}

Matrix  operator+(const Matrix& mat1,const Matrix& mat2) {

Matrix mat;

for(int i=0; i<2; i++)

for(int j=0; j<2; j++) {

mat.a[i][j]=mat1.a[i][j]+mat2.a[i][j];

}

return mat;

}

/****************************************************/

int main() {

Matrix m1,m2,m;

cout<<"input matrix m1:"<<endl;

cin>>m1;

cout<<"input matrix m2:"<<endl;

cin>>m2;

m=m1+m2;

cout<<"output matrix m:"<<endl;

cout<<m;

return 0;

}



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

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

相关文章

第二证券:今日投资前瞻:可控核聚变进展加速 光模块产业趋势加强

昨日&#xff0c;两市股指全线高开&#xff0c;盘中窄幅轰动&#xff0c;尾盘三大股指全线翻红。到收盘&#xff0c;沪指涨0.25%报3046.53点&#xff0c;深成指涨0.1%报9988.83点&#xff0c;创业板指涨0.2%报2009.21点&#xff0c;北证50指数涨近1%。两市估计成交8686亿元&…

个体诊所电子处方系统设计,诊所电子处方模板,药店电子处方系统,佳易王电子处方管理系统V16.0下载

个体诊所电子处方系统设计&#xff0c;诊所电子处方模板&#xff0c;药店电子处方系统&#xff0c;佳易王电子处方管理系统V16.0下载 软件支持配方模板&#xff0c;病人病历记录查询等&#xff0c;软件打印处方单所用的纸张为 A5纸。软件可以下载试用&#xff0c;点击最下方官网…

高效攻略各类BOSS,成为真正的剑侠!

逆水寒作为一款备受瞩目的国产武侠游戏&#xff0c;其精美的画面和真实的剑术体验吸引了众多玩家。在这篇实用干货分享中&#xff0c;我们将详细介绍一些攻略各类BOSS的技巧和策略&#xff0c;帮助你在游戏中轻松击败强大的对手&#xff0c;成为真正的剑侠大师。 首先&#xff…

谁在推动国际现货白银价格?

在过去的几十个年头里&#xff0c;国际现货白银价格经历了显著的波动&#xff0c;银价从1970年的每盎司1美元&#xff0c;到1980年的每盎司50美元&#xff0c;再到2010年的每盎司30美元&#xff0c;惊人的涨跌幅度令不少人留下了深刻的印象&#xff0c;本文将为大家剖析这些波动…

猪酒店房价采集

<?php // 设置代理 $proxy_host jshk.com.cn;// 创建一个cURL资源 $ch curl_init();// 设置代理 curl_setopt($ch, CURLOPT_PROXY, $proxy_host.:.$proxy_port);// 连接URL curl_setopt($ch, CURLOPT_URL, "http://www.zujia.com/");// 发送请求并获取HTML文档…

基于安卓android微信小程序的快递取件及上门服务系统

项目介绍 本文从管理员、用户的功能要求出发&#xff0c;快递取件及上门服务中的功能模块主要是实现管理员服务端&#xff1b;首页、个人中心、用户管理、快递下单管理、预约管理、管理员管理、系统管理、订单管理&#xff0c;用户客户端&#xff1b;首页、快递下单、预约管理…

​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型

内容来源&#xff1a;xiaohuggg Distil-Whisper&#xff1a;比Whisper快6倍&#xff0c;体积小50%的语音识别模型 ​该模型是由Hugging Face团队开发&#xff0c;它在Whisper核心功能的基础上进行了优化和简化&#xff0c;体积缩小了50%。速度提高了6倍。并且在分布外评估集上…

【软考】_高级_信息系统项目管理师_考前冲刺1

目录 一、某项目预计最快12天完成&#xff0c;最慢36天完成&#xff0c;21天完成的可能性最大。公司下达的计划是18天完成&#xff0c;要使计划完成的概率达到50%&#xff0c;在计划中需要增加&#xff08; &#xff09;天应急时间。 二、&#xff08; &#xff09;是指一个操…

二、网站高性能架构设计——web前端与池化

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、高性能浏览器访问 1.减少HTTP请求 HTTP协议是无状态的应用层协议&#xff0c;也就是说每次HTTP请求都需要建立通信链路、进行数据传输&#xf…

锂价疲软,市场需求持续低迷,赣锋锂业在短期内将继续面临痛苦

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 公司介绍 在赣锋锂业(01772)(002460)网站上&#xff0c;赣锋锂业称自己是一家拥有“中国第一”和“世界最大锂金属生产商”的“锂化合物产能”公司。 根据其2022财年年度报告&#xff0c;该公司最近一个财年的收入有84%和1…

基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 LDPC码 4.1 Fincke-Pohst-MAP球形检测算法 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2017b 3.部分核心程序 .........................................…

SpringBoot文件在线预览实现

kkFileView - 在线文件预览&#xff0c;一款成熟且开源的文件文档在线预览项目解决方案。 详细wiki文档&#xff1a;https://gitee.com/kekingcn/file-online-preview/wikis/pages 中文文档&#xff1a;https://gitee.com/kekingcn/file-online-preview/blob/master/README.md…

关于start-burp抓包夜神-系统证书导入

1、开启开发中模式 2、开启USB调试 3、开启端口监听并下载start-burp证书 4、证书在线格式转换 根据该网站【在线DER格式转pem CER格式转pem CRT格式转PEM证书格式--查错网】也可以搜索其它在线转换网站进行操作 新建一个文本文件重名为【9a5ba575.0】&#xff0c;将转换的内…

【万字长文】前端性能优化实践 | 京东云技术团队

一、引言 从一个假死页面引发的思考&#xff1a; 作为前端开发&#xff0c;除了要攻克页面难点&#xff0c;也要有更深的自我目标&#xff0c;性能优化是自我提升中很重要的一环&#xff1b; 在前端开发中&#xff0c;会偶遇到页面假死的现象&#xff0c; 是因为当js有大量计算…

【工程部署】在RK3588上部署OCR(文字检测识别)(DBNet+CRNN)

硬件平台&#xff1a; 1、firefly安装Ubuntu系统的RK3588&#xff1b; 2、安装Windows系统的电脑一台&#xff0c;其上安装Ubuntu18.04系统虚拟机。 参考手册&#xff1a;《00-Rockchip_RKNPU_User_Guide_RKNN_API_V1.3.0_CN》 《RKNN Toolkit Lite2 用户使用指南》 1、文…

SAP Debug时如何跳过(不执行)某些代码

Debug时如何跳过(不执行)某些代码 在DEBUG界面, 首先将光标定位到想跳至的代码行, 然后从右键菜单中选择Goto Statement, 或者从Debugger菜单中选择Goto Statement:&#xff08;效果相同&#xff09; 然后光标就会定位到想跳至的代码行 执行结果如下: 结果是000的原因是&#…

日历应用程序 BusyCal mac中文版软件特点

BusyCal mac是一款日历应用程序&#xff0c;它可以帮助用户轻松地管理日程安排、事件提醒、会议安排等。BusyCal 支持 macOS 和 iOS 平台&#xff0c;并且可以与 iCloud、Google 日历、Exchange 等多种日历服务进行同步。 BusyCal mac软件特点 强大的日历功能&#xff1a;Busy…

SQL练习01

1.游戏玩法分析 SQL Create table If Not Exists Activity (player_id int, device_id int, event_date date, games_played int); Truncate table Activity; insert into Activity (player_id, device_id, event_date, games_played) values (1, 2, 2016-03-01, 5); insert …

【Python3】【力扣题】268. 丢失的数字

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;哈希。元素去重&#xff0c;依次判断是否在0-n内&#xff0c;没有则返回。 知识点&#xff1a;set(...)&#xff1a;转为集合&#xff0c;集合中的元素不重复。 class Solution:def mis…

6.6二叉树的最大深度(LC104-E)、N叉树的最大深度(LC559-E)

二叉树的最大深度&#xff1a; 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二叉树的最大深度二叉树的高度 算法&#xff1a; 这道题既可以求深度&#xff0c;也可以直接求高度。不过高度和深度用的遍历方式不同。 二叉树写代码之前要确定遍历顺序…