运算符重载

加号重载

成员函数实现重载

#include <iostream>
using namespace std;
#include <string>;
class person {
public:
	int m_a = 0, m_b = 0;
	person operator+(person& p)
	{
		person tem;
		tem.m_a = this->m_a + p.m_a;
		tem.m_b =m_b + p.m_b;
		return tem;
	}
};
void test01()
{
	person p1; p1.m_a = 10; p1.m_b = 20;
	person p2; p2.m_a = 20; p2.m_b = 30;
	person p3 = p1 + p2;  //本质:person operator+(p2)
	cout<<p3.m_a<< endl;
}
int main()
{
	test01();
	return 0;
}

全局函数实现重载

#include <iostream>
using namespace std;
#include <string>;
class person {
public:
	int m_a = 0, m_b = 0;
	
};
person operator+(person& p1,person& p2)
	{
		person tem;
		tem.m_a =p1.m_a + p2.m_a;
		tem.m_b =p1.m_b + p2.m_b;
		return tem;
	}
void test01()
{
	person p1; p1.m_a = 10; p1.m_b = 20;
	person p2; p2.m_a = 20; p2.m_b = 30;
	person p3 = p1 + p2;  //本质:person operator+(p1,p2)
	cout<<p3.m_a<< endl;
}
int main()
{
	test01();
	return 0;
}

说明:

第一个:创建了一个对象p,&p是p的引用,当执行p1+p2时,p1 被视为this指针,而p2则作为参  数 &p 传递给 Person operator+ (Person &p) 函数。

第一个传入一个参数:Person operator+是成员函数,它将当前对象和另一个对象相加。这个函数以一个参数 p 作为运算符+的右操作数,而左操作数是函数被调用的对象自身(*this)。

第二个传入两个参数:Person operator+是全局函数,它不依赖于特定的对象,它可以独立地操作两个 Person 对象

也可以函数重载

左移运算符重载

作用:可以输出自定义数据类型

通常不利用成员函数重载:p. operator<<( cout )  简化为:p<<cout

无法使cout在左侧

解决方法2:解决测试函数中a和b的调用:在类中写一个构造函数,在构造函数中给变量赋值

 

 前置递增

后置递增 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值