第十二周项目1实现复数类的运算符重载 (友元函数)

C++复数类实现运算符重载 目录: 1.关于运算符重载 2.运算符重载的方式:成员函数和友元函数 3.只能用成员函数重载的运算符 4.利用复数类实现运算符重载 1.关于运算符重载 运算符重载就是对现有的运算符重新定义,赋予其另一种功能,以实现不同的数据类型。其本质还是函数的重载,使用运算符重载可以使程序更清晰。运算符重载的关键字operator。C++绝大多数运算符都可以重载,不能重载的运算符有. :: .... 阅读详情
/*Copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称 :
*作    者 : 李钊
*完成日期 : 2016年5月19号
*版 本 号 : v1.0
*
*问题描述 :  实现复数类的运算符重载
*输入描述 :
*程序输出 :  复数的加减乘除结果
*/


#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(){real=0;imag=0;}
    Complex(double r,double i){real=r; imag=i;}
    friend Complex operator+(Complex &c1,Complex &c2);
    friend Complex operator-(Complex &c1,Complex &c2);
    friend Complex operator*(Complex &c1,Complex &c2);
    friend Complex operator/(Complex &c1,Complex &c2);
    void display();
private:
    double real;
    double imag;
};

Complex operator+(Complex &c1,Complex &c2)
{
    Complex f;
    f.real=c1.real+c2.real;
    f.imag=c1.imag+c2.imag;
    return f;

}
Complex operator-(Complex &c1,Complex &c2)
{
    Complex f;
    f.real=c1.real-c2.real;
    f.imag=c1.imag-c2.imag;
    return f;

}
Complex operator*(Complex &c1,Complex &c2)
{
    Complex f;
    f.real=c1.real*c2.real;
    f.imag=c1.imag*c2.imag;
    return f;

}
Complex operator/(Complex &c1,Complex &c2)
{
    Complex f;
    f.real=c1.real/c2.real;
    f.imag=c1.imag/c2.imag;
    return f;

}


void Complex::display()
{
    cout<<"("<<real<<","<<imag<<")"<<endl;
}


int main()
{
    Complex c1(3,4),c2(5,-10),c3;
    cout<<"c1=";
    c1.display();
    cout<<"c2=";
    c2.display();
    c3=c1+c2;
    cout<<"c1+c2=";
    c3.display();
    c3=c1-c2;
    cout<<"c1-c2=";
    c3.display();
    c3=c1*c2;
    cout<<"c1*c2=";
    c3.display();
    c3=c1/c2;
    cout<<"c1/c2=";
    c3.display();
    return 0;
}


运行结果:

知识点总结:

友元函数与运算符重载结合

学习心得:

友元函数与成员函数交替使用

用成员或友元函数重载运算符 一.运算符重载的两种形式 运算符重载为类的成员函数或类的友元函数 1.区别: 成员函数具有this 指针,友元函数没有this指针 2.联系:不管是成员函数还是友元函数重载,运算符的: 使用方法相同。 传递参数的方式不同,实现代码不同,应用场合也不同 。 二. 用成员函数重载运算符 1.当一元运算符的操作数,或者二元运算符的左操作数是类的对象时,定义重载算符函数为成员函数。 2. 二元运算符op 如果要重载op 为类的成员函数,使之能够实现表达式oprd1 op oprd2,其中oprd1 为A 类对象, 阅读详情

相关推荐

浅谈C++中用友元函数的方法实现复合运算符(+=等)的重载方法

在写到重载复合运算符的题目时,用成员函数的方法比较容易实现。但是题目中还要求使用友元函数的方法实现,于是就卡在这里了。调试了数次后未果,于是上网翻阅资料,发现网上关于使用友元函数的方法实现复合运算符的重载内容甚少。于是乎,便自己鼓捣起来,终于在晚饭前有了结果。下面分享一下我写的代码,小白初次写博客,望大牛们多海涵,多知道。谢过!

toky2012的专栏 2459

第八周项目1 实现复数类中的运算符重载 (用类的友元函数)

/* *Copyright(c)2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:曾晓 *完成日期:2015年 4月 28日 *版本号:v1.0 */ #include using namespace std; class Complex { private: double real

我沿着陌生人的志向攀登 448

实测对比:DECIMER、Img2Mol、MolScribe,哪个化学结构识别工具更靠谱?

化学结构识别(CSR)工具的核心任务是将分子结构图像转换为SMILES(Simplified Molecular Input Line Entry System)表示。这一过程需要克服图像质量差异、绘制风格变化以及特殊基团识别等挑战。三款工具采用不同的技术路线:DECIMER:基于EfficientNetV2+Transformer架构,优势在于处理标准期刊文献中的分子图示Img2Mol。

weixin_32576389的博客 342

第十二周项目1.2—实现复数类中的运算符重载(友元函数)

/* *Copyright(c) 2016.烟台大学计算机与控制工程学院 *ALL rights reserved. *文件名称:test.cpp *作者:杨驰 *完成日期:2016年5月14日 *问题描述:请用类的友元函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘 */ #include using namespace std; class Complex { public:

yangchi 370

优惠券管理

(请设计一个优惠券兑换码生成方案,可以支持20亿以上的唯一兑换码,兑换码长度不超过10,只能包含字母数字,并且要保证生成和校验算法的高效)最后把签名值的后14位、新鲜值(4位)、自增序列(32位)拼接,得到一个50位二进制数,然后与一个较大的质数做异或运算加以混淆,再基于Base32或Base64转码,即可的对兑换码。现在,就剩下防止爆刷了。自增id从1增加到Integer的最大值,可以达到40亿以上个数字,而占用的字节仅仅4个字节,也就是32个bit位,距离50个bit位的限制还有很大的剩余,符合要求!

qq_36312661的博客 2204

USB HID虚拟电池:Windows零驱动电源状态模拟方案

虚拟电池是一种在硬件测试与功耗分析中替代真实电池、实现可控电源状态注入的关键技术。其核心原理是通过标准USB HID协议(特别是UPS设备类)向操作系统上报可编程的AC/DC状态、剩余电量、容量参数等,绕过内核驱动限制,达成毫秒级响应与跨Windows版本兼容。该技术显著提升SoC能效验证、电池健康度校准及低电量行为触发等场景的可重复性与精度。本文基于CH554微控制器实现符合HID UPS规范的物理层虚拟电池设备,支持零驱动安装、USB原生识别与实时参数调控,适用于笔记本平台功耗建模、电源管理策略验证及自

weixin_35755188的博客 354

第十二周项目1-实现复数类中的运算符重载(1)

*文件名称:test.cpp   *作   者:张明宇  *完成日期:2016年5月15日   */ 问题及代码: (1)请用类的成员函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除 class Complex { public: Complex(){real=0;imag=0;} Complex(double r,dou

zhangmingyuz的博客 319

企业微信消息推送(一)接收消息服务器URL

企业微信限制过多,公司域名所有权检验不通过。采用接收消息服务器URL的方式。使用vscode,将UTF-8 BOM文本编码改为UTF-8。配置接收消息服务器URL。

Xiaoweidumpb 1万+

8-1实现复数类中的运算符重载(友元函数)

/* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现复数类中的运算符重载。 * 样例输入: * 样例输出: * 问题分析:用类的友元函数,而不是成员函数,完成上面提及的运算符的重载。 */ #include using namespace std; class Complex { public:

u012369069的专栏 729

FPGA波束形成:从算法到硬件的艺术之旅

本文深入探讨了FPGA在波束形成技术中的应用,从算法原理到Verilog硬件实现的全过程。文章详细分析了FPGA并行处理、低延迟和可重构特性如何优化波束形成系统性能,并提供了Verilog关键模块代码示例和资源优化策略,为工程师实现高效FPGA波束形成解决方案提供实用指导。

tea88的博客 1044

SAP项目中 Waterfall vs Agile 的深度对比分析背景:方法论的演进SAP项目实施方法论经历了显著的代际更替。早期以 ASAP(Accelerated SAP) 为代表,采用经典瀑

本文对比分析了SAP项目实施中瀑布模型(ASAP)与敏捷方法(SAP Activate)的核心差异。瀑布模型采用线性流程,需求固定但变更成本高;敏捷方法则通过迭代开发实现动态调整,强调最佳实践和用户持续参与。文章指出,SAP系统的复杂性使纯粹敏捷难以实施,需在标准化与定制化间取得平衡。最终建议根据项目特性选择方法论:稳定需求适用瀑布模型,变化频繁则推荐敏捷,而SAP Activate本质上是两者的结构化融合,代表未来趋势。关键在于匹配项目实际需求,而非盲目追随方法论潮流。

金牌架构师 345

C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex

题目要求如下: 1) 基本的构造函数; 2) 成员运算符+、-实现复数的加减运算; 3) 友元运算符+、-实现更合理的加减运算; 4) 运算符<<和>>实现复数类的输出输入。

好儿郎~志在四方 1万+

Open-Sora代码详细解读(2):时空3D VAE

目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。

沉迷单车的追风少年 2052

第十二周项目1-实现复数类中的运算符重载(1.2友元函数)

问题及代码: /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:zwj.cpp *作 者:张伟晶 *完成日期:2016年5月12日 *版 本 号:v1.0 * *问题描述:用类的友元函数完成运算符重载 *输入描述: *程序输出: */ #include using namespace std; c

味精加盐不加糖 1032

STM32F767 GPIO跑马灯工程从零搭建指南

嵌入式开发中,基于HAL库的STM32工程初始化是确保外设可靠运行的基础环节。其核心在于理解芯片时钟树配置原理、GPIO工作模式与硬件电气特性之间的映射关系。正确启用RCC时钟源、合理分配AHB/APB总线分频系数,可保障系统主频稳定;而精准设置推挽输出、上下拉状态及引脚速度,则直接影响LED等基础外设的驱动可靠性。结合STM32CubeMX图形化配置工具,开发者能将寄存器级操作抽象为可视化流程,显著提升工程可追溯性与复用性。本文以STM32F767IGT6和阿波罗开发板为载体,详解从Repository固

weixin_42453228的博客 61

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【C++之运算符重载1】复数类 Complex 重载运算符 “+”

题目要求: 定义一个复数类 Complex ,重载运算符 “+” ,使之能用于复数的加法运算。参加运算的两个运算量可以都是复数类对象,也可以其中一个是整数。例如:c1+c2, c1+i, i+c1 均合法(设 i 为整数,c1、c2为复数)。编程序,分别求两个复数之和、整数和复数之和。 ——谭浩强的《C++面向对象程序设计》第4章习题第3小题...

霍喜猫的博客 7676

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++运算符重载(友元函数方式)

我们知道,C++中的运算符重载有两种形式:①重载为类的成员函数(见C++运算符重载(成员函数方式)),②重载为类的友元函数。 当重载友元函数时,将没有隐含的参数this指针。这样,对双目运算符,友元函数有2个参数,对单目运算符,友元函数有一个参数。但是,有些运行符不能重载为友元函数,它们是:=,(),[]和->。 重载为友元函数的运算符重载函数的定义格式如下: friend 函数类型

GarfieldEr007的专栏 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++运算符重载一:运算符重载、复数类CComplex、输入输出运算符重载

文章目录一、运算符重载二、复数类CComplex三、输出运算符重载 一、运算符重载 运算符重载: 使对象的运算运算表现得和编译器内置类型一样,使同一个运算符可以有不同的功能。即定义一个重载运算符的函数,使指定的运算符不仅能实现原有的功能,而且能实现在函数中指定的新的功能。 运算符重载实质上是函数的重载,重载运算符的函数一般格式如下: 函数类型 operator 运算符名称(形参表) {对运算符的重...

Rain的博客 4999

实现复数类中的友元函数运算符重载

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:a.cpp * 作 者:孔云 * 完成日期:2014年4月16日 * 版 本 号: v1.0 * 输入描述:主函数中给出 * 问题描述:用类的友元函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。

u012369559的专栏 1653

使用重载运算符实现一个复数类(C++实验十)

#include <iostream> using namespace std; class Complex{//复数类 public: Complex(double r=0,double i=0){//构造函数 re=r; im=i; } //~Complex();//析构函数 friend Complex operator+(Complex &c1,Complex &c2);//用友元函数实现重载 fri

濉溪的博客 2235

[C++] 运算符重载总结及复数类实现

C++ 预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型(类)是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要我们对这么运算符进行重新定义,赋予其新的功能,以满足自身的需求。 运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的 C++ 多态。目的在于让人能够用同名的函数来完成不同的基本操作。要重载运算符,需要使用被称为运算符函数的特殊函数形式,运算符函数形式:operator p(argument-list)//operator后

柚子树's Blog 870

使用友元函数来完成复数类的运算符重载

/* *Copyright   (c)  2016,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者: 武聪 *完成日期:2016年3月10日 *版本号:v1.0 * *问题描述: 使用友元函数代替成员函数来完成复数类的运算符重载 *输入描述: *程序输出: */ #include using namespace st

wucong111的博客 1286

C++ 运算符重载-友元函数(复数类)

【问题描述】 请定义一个复数类,将+/-运算符重载为友元函数,实现复数与复数的加减及复数与浮点数的加减。 请根据给定的main函数,设计Complex类。 【样例输出】 a+b=(4)+(3i) a-b=(2)+(5i) a+100=(103)+(4i) a-2.5=(0.5)+(4i) 100+a=(103)+(4i) 2.5-a=(-0.5)+(-4i) #include <iostream> using namespace std; class Complex{ private:

YANG12345_6的博客 2321

《第八周实验一-1》实现复数类中的运算符重载

实验内容:实现复数类中的运算符重载定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。   * 程序的版权和版本声明部分    * Copyright (c) 2011, 烟台大学计算机学院学生    * All rights reserved.    * 文件名称: 实现复数类中的运算符重载                               * 作    者:

zhangbin9111230的专栏 1742

第十二周实践项目1.2-实现复数类中的运算符重载

问题及代码: /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年5月18日 *版 本 号:v1.0 * *问题描述:请用类的友元函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除 *输入描述: *程序输出: */ #inc

Asleny的博客 566
上一篇: 第十二周项目1实现复数类的运算符重载
下一篇: 第十二周项目1复数类的运算符重载(3)
保健钊
博客等级 码龄11年 10粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值