运算符重载函数作为类成员函数和有友元函数

RAD Studio 12安装全攻略:从下载到破解InterBase的完整流程(附KeyPatch使用技巧) 本文提供RAD Studio 12的完整安装指南,包括系统要求、安装步骤及InterBase数据库的高效配置方法。详细介绍了如何使用KeyPatch工具进行许可证处理,并分享了IDE优化和开发技巧,帮助开发者快速上手这一强大的跨平台开发工具。 阅读详情

     “+”号是双目运算符,但是为什么我们没有重载函数上设为两个参数?其实实际上,运算符重载函数有两个参数,由于重载函数是Complex类中的成员函数,有一个参数是隐含的运算符函数是用this指针隐式地访问类对象的成员。

    程序二是“运算符重载函数作为类成员函数和有友元函数”,在这里我们就要显式使用两个参数了

//////////////////////////////////////////////////

程序一:

#include<iostream>
using namespace std ;
class Complex{

public :
    Complex (){real =0 ; imag =0 ;}
    Complex (double r, double i ){real =r ; imag = i ;}
    Complex operator + (Complex &c2){
    real = real +c2.real ;
    imag = imag + c2 .imag;
    return *this ;
    };
    void display();
private :
    double real;
    double imag;

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

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

//////////////////////////////////////////////

程序二:

#include<iostream.h>

//using namespace std;
class Complex   //复数类
{
private: 
double image; 
double real; 
public: 
Complex(double x=0.0,double y=0.0)//构造函数
{
real  =x; image =y;  
}
void Print();
friend Complex operator +(const Complex &c1,const Complex &c2);
};
void Complex::Print()
{
cout<<real<<"+"<<image<<"i"<<endl; //以复数格式输出
}
Complex operator +( const Complex &c1, const Complex &c2)
{
Complex temp(c1.real+c2.real,c1.image+c2.image);
return temp;
}
int main()
{
Complex c1(2,7),c2(4,2),c3;
c3=c1+c2;   //表达式的完整形式应该是 c3=operator+(c1,c2)
c3.Print();
return 0;
}
小红书urlscheme和Activity 本文档详细介绍了小红书App的Deeplink跳转规范,涵盖了多个功能模块的跳转协议。主要内容包括:主页各Tab(关注、发现、购买)的跳转方式;不同类型笔记(图文/视频/长笔记)的详情页跳转参数;用户相关页面(主页/绑定/资料/消息等)的跳转协议;搜索功能(输入页/结果页)的跳转方式;以及话题、标签、专辑、H5页面等特殊场景的跳转实现。文档还提供了各跳转协议所需的参数说明,包括参数类型、默认值、是否必填等详细信息,并标注了不同版本和平台的兼容性要求。 阅读详情

相关推荐

DeepSeek Harness实战:从零构建插件化AI Agent

AI Agent开发正从硬编码走向框架化组织,插件化架构成为提升工程效率的关键。在构建可复用、可扩展的智能体系统时,开发团队需要一套能够统一管理模型调用、工具注册与上下文组装的基础设施。DeepSeek Harness作为面向Agent工程的插件化框架,通过Harness、DeepAgent与Skill三个核心抽象,将模型、工具与技能解耦为可插拔单元,让开发者无需重复造轮子即可快速搭建具备工具调用能力的智能体。本文从环境配置到Skill插件开发,完整演示如何基于DeepSeek模型构建一个可运行的Agent

weixin_34279184的博客 447

运算符重载的方式 双目运算符重载为类的成员函数

/* 函数的重载分为两种:1.重载为类的成员函数 2.重载为类的友元函数 */ //1.双目运算符重载为类的成员函数 #include using namespace std; class point{ private: int x,y; public: point(int xx = 0,int yy = 0){ x = xx; y = yy; } int get

yangshuolll的专栏 3420

【2022KaliLinux】openvas/gvm 没有scan configs 或者是 scan config error “XXXXXXXXXXX”

gvm/openvas的configuration的scan config为空

zbossz的学习小分队 3606

spark进阶(三):scala基础

spark进阶(三):scala基础 Spark本身就是使用Scala语言开发的,spark和flink的底层通讯都是基于的高并发架构akka开发,然而akka是用scala开发的,Scala与Spark可以实现无缝结合,因此,Scala顺理成章地成为了开发Spark应用的首选语言,大多数spark教程都是基于scala编写,学习一下scala也是很必要的。 这里只对scala在spark中使用的部分进行记录,不涉及一些复杂的scala使用,只保证能正常使用spark即可。 对于scale的话,学过kotl

泛泛之素 1734

SCRFD算法解读及环境安装实践

SCRFD检测算法及环境安装

lishanlu136的博客 1009

保姆级教程:在RK3576上配置USB网卡从零到外网访问(附udev规则详解)

本文提供了在RK3576开发板上配置USB网卡的完整教程,涵盖从内核驱动、udev规则到网络路由的全流程。重点讲解了如何利用USB Gadget功能实现高速网络连接,并构建稳定的算力集群,确保多设备间通信及外网访问。

grass的博客 458

运算符重载函数作为类成员函数和友元函数

运算符重载函数既可以做为类成员函数也可以重载为友元函数,但使用定义方法和使用上是由较大差别的。 运算符重载函数作为类成员函数 首先看一个运算符重载函数作为类成员函数的示例代码: 定义Complex为复数类,重载运算符"+"实现复数的相加。 程序1.1 #include using namespace std; class Complex { public: Complex()

学如逆水行舟,不进则退 3839

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1181

C++运算符重载函数作为类成员函数和友元函数

C++运算符重载函数作为类成员函数 1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同。 因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才有意义。 1.2将双目运算符重载为友元函数时,在形参表列中必须有两个参数,不能省略,形参的顺序任意。 1.3在使用运算表达式的时候,运算符左侧与函数第一个参数对应,右侧与第二个参数对应。

海贼王 2万+

环境配置与基础教程:2026大厂标准:使用 DVC (Data Version Control) 实现 YOLO 数据集版本控制全链路管理

本文介绍了使用DVC 3.0对YOLO数据集进行全链路版本控制的方法。主要内容包括: DVC 3.0的核心增强:内容块级缓存去重、并行云传输、AI智能体元数据跟踪等新特性,可显著提升YOLO数据集管理效率。 环境配置:详细说明DVC 3.0的安装步骤、项目初始化方法以及远程存储配置方案(支持S3、GCS、Azure等多种存储后端)。 目录结构规范:提供符合大厂MLOps标准的项目目录结构设计。 实战操作: 原始数据版本化 多格式标注数据版本控制 版本切换方法 优势说明:DVC通过哈希指针机制管理大型数据集,

ZXSXJ的博客 148

从权限对象到业务角色:把 SAP Authorization Object 讲清楚,并用 ABAP 写对一次 AUTHORITY-CHECK

摘要:SAP权限管理的核心在于Authorization Object(授权对象),它通过组合最多10个授权字段来精确控制用户访问权限。关键要点包括:1) 授权对象与ACTVT字段(如01创建/02修改/03显示)的配合使用;2) ABAP中AUTHORITY-CHECK语句的四种常见返回码(0通过/4字段不匹配/12无权限/40无效用户);3) 系统自动执行的S_TCODE事务码检查;4) 自定义授权对象时应遵循"最少且足够"原则,优先复用标准对象。在RAP和OData场景中,权限检查

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 261

运算符重载函数作为类成员函数和友元函数 (转)

可以看到,重载函数operator+访问了两个对象中的成员,一个是this指针指向的对象中的成员,一个是形参对象中的成员。如this->real+c2.real,this->real就是c1.real。上节中已说明,在将运算符函数重载为成员函数后,如果出现含该运算符的表达式,如c1+c2,编译系统把它解释为 c1.operator+(c2)即通过对象c1调用运算符重载函数...

dasfawef1255612的博客 219

我的PCB设计经验总结及最容易犯错的100例之二B07

本文总结了PCB设计中的常见错误及解决方法。作者通过记录自身及他人的设计失误,系统归纳了高频、隐蔽且致命的问题,如电容中间穿线、高速信号跨分割、锐角布线等。重点提出从错误中提炼规律,建立分类案例库,并开发自动化检查工具的方法。案例涵盖高速信号处理、电源设计、EMC防护等关键领域,强调通过原理理解和实践验证提升设计质量。文章建议工程师建立个人错误数据库,从被动纠错升级为主动预防,最终形成系统化的设计方法论,提高PCB一次成功率。

启芯硬件的博客 83

运算符重载为类成员函数和友元函数,参数个数问题

一个双目运算符作为类的成员函数重载时,重载函数的参数表中有()个参数。 A.1 B.2 C.3 D.0 A 若为成员函数重载,参数一般为类对象的引用,另一个参数由this 指针所指向,故不显示。 若为友元函数重载,则有两个参数! ...

sinat_42550851的博客 5966

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

10.2 运算符重载函数作为类成员函数和友元函数

Complex operator+(Complex &c2) { Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } //+是双目运算符,函数重载中只有一个参数,实际上运算符重载函数有两个参数,是由于重载函数是Complex类中的成员函数,有一个参数是隐含的,运算符函数是用this //指针隐士的访问对象成员函数。 C

sxy201658506207的博客 1060

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++运算符重载函数作为友元函数

如果将运算符重载函数作为成员函数,它可以通过 this 指针自由地访问本类的成员变量,因此,可以少写一个函数的参数,但是,必须要求运算表达式的第一个参数(即运算符左侧的操作数)是一个类对象,而且,与运算符函数的类型相同。实际上,运算符重载函数有两个参数,由于重载函数是my_string类中的成员函数,所以,有一个参数是隐含的,运算符函数是用this指针隐式地访问类对象的成员,可以看到,重载函数operator + ();访问了两个对象中的成员,一个是this指针指向的对象中的成员,一个是形参对象中的成员。

LC的专栏 2747

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

重载函数和运算符,友元函数,函数对象,lambda表达式(匿名函数)

重载函数和运算符,友元函数,函数对象,lambda表达式

qq_45809243的博客 1325

运算符重载的方式

运算符重载的方式有两种:类成员函数和友元函数。 calss{ private:      int num; public:      Step(int num){this-&gt;num=num;}      Step&amp; operator++();      friend Step operator+(const Step &amp;p1,const Step &amp;p2...

zrh_优快云的博客 1068

函数重载和运算符重载

函数重载和运算符重载,实现了常见的==运算符、=运算符、+、+=运算符,

crawer 1546

C++运算符重载

因此这里的基本运算符是不能直接作用在自定义类型上面的。因此我们的运算符重载是为了实现基本运算符运用在自定义的类上面,直接操作自定义类型,我们这里不能操作是因为我们这里没有写运算符重载。

m0_53506460的博客 2036
上一篇: 多层继承中的虚函数
下一篇: 单双运算符重载
laohan_
博客等级 码龄15年 112粉丝 224原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值