运算符重载

加号运算符重载

#include<iostream>
#include<string>
using namespace std;


class Person
{
	friend void printPerson(Person& p);
public:
	Person operator+(Person &p);
	Person(int age, int weight)
	{
		this->m_age = age;
		this->m_weight = weight;
	}
private:
	int m_age;
	int m_weight;
};

Person Person :: operator+(Person &p)
{
	Person temp(1,2);
	temp.m_age = this->m_age + p.m_age;
	temp.m_weight = this->m_weight + p.m_weight;
	return temp;
}

void printPerson(Person& p)
{
	cout << "age: " << p.m_age << " weight: " << p.m_weight << endl;
}
void test01()
{
	Person p1(10, 20);
	Person p2(5, 6);

	Person p3 = p1 + p2;
	printPerson(p3);

	Person p4 = p1.operator+(p2);
	printPerson(p4);
}
int main()
{
	test01();

	system("pause");
	return 0;
}

左移运算符和递增运算符

#include<iostream>
#include<string>
using namespace std;


class Person
{
	friend void printPerson(Person& p);
public:
	//Person operator+(Person &p);
	Person(){}//默认构造函数
	Person(int age, int weight)
	{
		this->m_age = age;
		this->m_weight = weight;
	}

	//递增运算符重载
	Person& operator++()//函数返回引用才能实现多层++
	{
		m_age++;
		m_weight++;
		return *this;
	}
	Person operator++(int)
	{
		Person temp = *this;
		m_age++;
		m_weight++;
		return temp;
	}

	int m_age;
	int m_weight;
};

//Person Person :: operator+(Person &p)
//{
//	Person temp(1,2);
//	temp.m_age = this->m_age + p.m_age;
//	temp.m_weight = this->m_weight + p.m_weight;
//	return temp;
//}

Person operator+(Person& p1,Person& p2)
{
	Person temp;
	temp.m_age = p1.m_age + p2.m_age;
	temp.m_weight = p1.m_weight + p2.m_weight;
	return temp;
}

//左移运算符重载
ostream& operator<<(ostream& cout, Person&p)//引用做函数值的返回值,要不然返回一个cout的话,是重新创建一个cout,而cout只允许存在一个,所以必须返回引用
{
	cout << "age: " << p.m_age << "weight: " << p.m_weight << endl;
	return cout;
}
//打印函数
void printPerson(Person& p)
{
	cout << "age: " << p.m_age << " weight: " << p.m_weight << endl;
}

void test01()
{
	Person p1(10, 20);
	Person p2(5, 6);

	Person p3 = p1 + p2;
	printPerson(p3);

	//Person p4 = p1.operator+(p2);//函数写在类内,简写为p4=p1+p2
	//printPerson(p4);

	Person p5 = operator+(p1, p2);//简写p5=p1+p2;
	printPerson(p5);

	p5.operator++();
	++p5;
	p5++;
	cout << p5;
}
int main()
{
	test01();

	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值