【C++编程】类与对象 -- 运算符重载:加号、左移运算符、递增运算符、函数调用运算符(仿函数) ...

【P121 39】C++ 运算符重载(加号、左移、递增、赋值、关系、函数调用) C++ 运算符重载一、加号运算符重载1、成员函数重载+号2、全局函数重载+号3、函数重载的版本 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 一、加号运算符重载 作用:实现两个自定义数据类型相加的运算 1、成员函数重载+号 2、全局函数重载+号 1、成员函数重载+号 #include<iostream> using namespace std; //加号运算符重载 class Person { public: //1、成员函数重载+号 //Per 阅读详情
  • 加号 + :Person operator+(Person p);
    #include <iostream>
    using namespace std;
    
    class Person
    {
    public:
    	Person(int a, int b): m_A(a), m_B(b)
    	{
    	}
    	int m_A;
    	int m_B;
    	Person operator+(Person p)  // 通过成员函数重载 +
    	{
    		Person temp(0, 0);
    		temp.m_A = this->m_A + p.m_A;
    		temp.m_B = this->m_B + p.m_B;
    		return temp;
    	};
    };
    
    int main()
    {
    	Person p1(10, 20);
    	Person p2(10, 20);
    	Person p3 = p1 + p2;  // p3.m_A: 20, p3.m_B: 40  
    }
    
  • 左移运算符 << :ostream & operator<<(ostream &cout, Person p);
    #include <iostream>
    using namespace std;
    
    class Person
    {
    	friend ostream &operator<<(ostream &cout, Person p); // 如果涉及 private 成员
    
    public:
    	Person(int a, int b): m_A(a), m_B(b)
    	{
    	}
    	int m_A;
    	int m_B;
    };
    
    ostream & operator<<(ostream &cout, Person p) // 无法利用成员函数实现
    {
    	cout << " m_A = " << p.m_A << " m_B = " << p.m_B << endl;
    	return cout;
    }
    
    int main()
    {
    	Person p(10, 20);
    	cout << p << endl;  //  m_A = 10 m_B = 20
    }
    
  • 递增运算符 ++ :Person & operator++(), Person operator++(int)
    #include <iostream>
    using namespace std;
    
    class Person
    {
    public:
    	Person(int a, int b): m_A(a), m_B(b)
    	{
    	}
        Person & operator++()   // 前置递增,返回引用
        {
            this->m_A++;
            return *this;
        }
        Person operator++(int)  // 后置递增,返回值,参数 int 占位
        {
            Person temp = *this;
            this->m_A++;
            return temp;
        }
    	int m_A;
    	int m_B;
    };
    
    ostream & operator<<(ostream &cout, Person p)
    {
    	cout << " m_A = " << p.m_A << " m_B = " << p.m_B << endl;
    	return cout;
    }
    
    int main()
    {
    	Person p(10, 20);
    	cout << p << endl;   // m_A = 10 m_B = 20
    	cout << ++p << endl; // m_A = 11 m_B = 20
    	cout << p++ << endl; // m_A = 11 m_B = 20
    }
    
  • 函数调用运算符(): 自选返回类型 operator()(自选形参);
    #include <iostream>
    using namespace std;
    
    class Person
    {	
    public:
    	Person(int a, int b): m_A(a), m_B(b)
    	{
    	}
        void operator()()   // 函数调用运算符 -> 仿函数
        {
            cout << "here" << endl;
        }
    	int m_A;
    	int m_B;
    };
    
    
    int main()
    {
    	Person p(10, 20);
    	p();  
    }
    
  • 其他不赘述,仅给出 函数名称和参数返回类型
    • 赋值运算符=: Person& operator=(Person p);
    • 关系运算符==: bool operator==(Person p);

【黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难】

别再魔改LWIP了!用STM32CubeMX配置F407的TCP保活(KeepAlive)与自动重连 本文详细介绍了如何通过STM32CubeMX配置STM32F407的LWIP协议栈,实现TCP保活(KeepAlive)与自动重连功能,解决网络异常断开问题。文章提供了从基础环境配置到自动重连架构设计的完整指南,帮助开发者构建高可靠的网络连接机制,适用于工业物联网和嵌入式设备开发。 阅读详情

相关推荐

金融科技数据源

数字金融开放研究平台

平平淡淡,戒急用忍,一生学闭嘴。 1757

C++面向对象(类和对象)—— 运算符重载(对象特性、仿函数)

C++运算符重载、面向对象(类和对象)、仿函数、封装、继承、多态

2401_87692970的博客 1749

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1579

类和对象-运算符重载-C++

赋值运算符。

2401_84315007的博客 1913

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 370

QT与Coin3D实现机器人的仿真

前言 Coin3D编程环境配置好后,开始下一步的机器人仿真任务。本文根据在研5轴机器人,完成三维模型生成与机器人的仿真。主要参考博主冯Jungle的博客,在此表示感谢。 ——2021.05.23 环境 Win10:VS2019、QT5.15.2、Coin3D、SolidWorks2016 机器人三维模型生成 目前广泛应用于因特网的VRML ( Virtual Reality Modeling Language,虚拟现实建模语言)为用户提供一种可参与的、并能对场景中对象主动做出反应的虚拟现实环境,现已成

焦露的博客 6906

C++ 运算符重载{加号、左移、递增、赋值、关系、函数调用运算符重载} 两种重载方式:利用成员函数重载、利用全局函数重载【重载方式视情况而定】

运算符重载对已有的运算符重新定义,使其能够作用于用户自定义类型,并赋予其适应特定需求的功能,同时保持与内置数据类型相同的语法习惯。举个例子来说明上面的红字部分:int a=10;int b=2;int c=a+b;int m_B;Person p1;p1.m_A=10;p1.m_B=5;Person p2;p2.m_A=10;p2.m_B=5;

xinxin的博客 1403

通达信抓波段指标(主图)

VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。

q125500612的博客 2134

C/C++笔记总结——运算符重载(加号、左移、递增、赋值、关系、函数调用运算符重载)

运算符重载要用到关键字operator,其后紧跟要重载的运算符,常常将他们看做一个整体。比如要对加号进行运算符重载,那么就是operator+。运算符重载实现为类的成员函数,基本用法为“返回值类型 operator重载运算符 (参数类型 参数名)”。本文给出了加号运算符重载(+),左移运算符重载(

给你糖ya的博客 1694

YOLOv12改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov12精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 684

dify进阶:使用 FastAPI 的 StreamingResponse 实现高效的数据流传输

在 FastAPI 框架中,是一个非常有用的工具,它允许你以流的方式发送数据给客户端,而不是一次性加载所有内容到内存中再发送。这对于处理大型文件下载、视频流或者任何需要长时间处理的任务特别有用。

xiezhipu的博客 1433

C++运算符重载

文章目录C++运算符重载1. 加号运算符(+)重载代码实现2.左移运算符(cout)重载代码实现3.递增运算符(++)重载代码实现4.赋值运算符(=)重载代码实现5.关系运算符(==)重载代码实现6.函数调用运算符()重载代码实现 C++运算符重载 ​ 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 ​ 运算符重载,也可以发生函数重载 1. 加号运算符(+)重载 作用:实现两个自定义数据类型相加的运算 代码实现 #include <iostream> usin

hcx的博客 6683

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++类和对象-C++运算符重载->加号运算符重载、左移运算符重载、递增运算符重载、赋值运算符重载、关系运算符重载、函数调用运算符重载

ostream& operator<<(ostream& cout, Person& p) //本质 operator<<(cout,p) 简化 cout<<p。cout << "p1的年龄为:" << *p1.m_Age << endl;cout << "p2的年龄为:" << *p2.m_Age << endl;cout << "p3的年龄为:" << *p3.m_Age << endl;

鲸鱼的博客 2027

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++的面向对象学习(6):运算符的重载

运算符重载是C++中一种强大的特性,它允许我们为自定义的类类型定义运算符的行为。通过运算符重载,我们可以使用自定义的类对象像使用内置类型一样进行运算。算术运算符重载:+、-、*、/等运算符可以被重载,使得两个对象可以进行相应的运算。关系运算符重载:==、!=、<、>、<=、>=等运算符可以被重载,用于比较两个对象的关系。赋值运算符重载:=运算符可以被重载,用于将一个对象的值赋给另一个对象。下标运算符重载:[]运算符可以被重载,用于实现类似数组的下标访问操作。

qq_53092944的博客 1155

假人有限元模型

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

【C++】运算符重载

本篇文章将讲到运算符重载,加号运算符重载,左移运算符重载,递增运算符重载,指针运算符重载,赋值运算符重载,[ ]运算符重载,关系运算符重载,函数调用运算符重载, 以及不要重载&& 和 || 和重载建议。

2301_80035097的博客 1756

从0到1入门C++编程——05 类和对象之运算符重载、继承

本文的主要内容是介绍C++中类和对象相关的知识,包括运算符重载和继承,文章对于每一部分的介绍都附有代码和程序运行结果。

西岸贤 1312

C++类与对象【运算符重载】

关注博主,获取更多关于C++的优质内容!

m0_51574586的博客 941

C++:类与对象(四)运算符重载

了解前置递增与后置递增的机制实例:实现自定义的数据的前置后置递增。

Heisenburg_JauZ的博客 999

cpp自学 day17(运算符重载)

何时使用全局函数重载运算符以及何时使用成员函数重载运算符运算符类型全局函数重载成员函数重载备注一元运算符是是如operator++(前置和后置)和operator!二元运算符是否如operator+operator-,当操作数之一不是类类型时使用全局函数输出运算符是否operator<<用于输出流输入运算符是否operator>>用于输入流下标运算符是否operator[]用于访问数组或容器元素函数调用运算符是否operator()用于类实例的函数调用。

CWNU_Dragon的博客 1646

C++核心编程运算符的重载

C++中各类运算符的重载知识总结

weixin_73497355的博客 942

C++中的 运算符重载

C++的 各种运算符重载:加号、左移、递增、赋值、关系、函数调用

qq_24472227的博客 4701

C++【类与对象】——运算符重载

C++【类与对象】——运算符重载串讲 涉及 1)加号运算符,+:实现自定义数据类型相加 2)左移运算符,<<:实现自定义数据类型输出 3)递增运算符,前置++、后置++:实现自定义数据类型递增 4)关系运算符,==、!=:实现自定义数据类型比较操作 5)函数调用运算符,():定义()实现自定义功能 核心函数为operator加上述运算符,难点为重载运算符的连续调用。

憨憨冲鸭 1353

(八)C++类和对象之运算符重载

C++类和对象之运算符重载

今天也要加油呀ʕ ᵔᴥᵔ ʔ 1135

C++核心编程之运算符重载

C++核心编程之运算符重载

嵌入式小程同学的博客 1038

C++ 运算符重载

运算符重载(Operator Overloading)允许为自定义类型(如类、结构体)赋予类似内置类型的运算符行为,使对象之间可以使用+、-、==、<<等运算符进行操作,提升代码的可读性和易用性。

ha0ha0xuexi的博客 1291
上一篇: 【C++编程】类的 this 指针 -- 两大功能
下一篇: 【C++ 】类与对象 -- 纯虚函数与抽象类
CODE_RabbitV
博客等级 码龄7年 2931粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值