c++ 重载运算符

#include<iostream>
using namespace std;
#include<string>
//class Person {
//public:
//	int m_A;
//	int m_B;
//
//
//
//public :
//	Person() {};
//	Person(int a, int b)
//	{
//		this->m_A = a;
//		this->m_B = b;
//
//
//
//	}
//	Person operator +(const Person& p)
//	{
//		Person temp;
//		temp.m_A = this->m_A + p.m_A;
//		temp.m_B = this->m_B + p.m_B;
//
//	}
//
//
//};
//
//Person operator+(const Person& p2, int val)
//{
//	Person temp;
//	temp.m_A = p2.m_A + val;
//	temp.m_B = p2.m_A + val;
//	return temp;
//
//}
//class Person {
//	friend ostream& operator<<(ostream& out, Person& p);
//private:
//	int m_A;
//	int m_B;
//public:
//	Person(int a, int b)
//	{
//		this->m_A = a;
//		this->m_B = b;
//
//	}
//
//
//};
//
//
//ostream& operator<<(ostream& out, Person& p)
//{
//	cout << "a:" << p.m_A << "b:" << p.m_B;
//	return out;
//
//}
//class MyInterger {
//	friend ostream& operator<<(ostream& out, MyInterger);
//private:
//	int m_Num;
//
//
//public :
//	MyInterger()
//	{
//		m_Num = 0;
//
//	}
//	//前置++
//	MyInterger& operator++()
//	{
//
//		m_Num++;
//		return*this;
//
//
//	}
//	//后置++
//	MyInterger operator++(int)
//	{
//
//		MyInterger temp = *this;
//		m_Num++;
//		return temp;
//
//	}
//
//};
//
//ostream& operator<<(ostream& out, MyInterger myint)
//{
//	cout << myint.m_Num;
//	return out;
//
//
//}
//class Person
//{
//public:
//
//	int* m_Age;
//
//
//public :
//	Person(int age)
//	{
//		m_Age = new int(age);
//
//
//	}
//	//重载赋值运算符
//	Person& operator=(Person& p)
//	{
//
//		if (m_Age != NULL)
//		{
//			delete m_Age;
//			m_Age = NULL;
//
//		}
//
//		//提供深拷贝
//		m_Age = new int(* p.m_Age);
//
//
//
//		return *this;
//
//
//
//	}
//
//
//	~Person()
//	{
//
//		if (m_Age != NULL)
//		{
//			delete m_Age;
//			m_Age = NULL;
//
//		}
//	}
//
//
//};
//关系运算符重载
//class Person
//{
//public:
//	string m_Name;
//	int m_Age;
//
//
//public :
//	Person(string name, int age)
//	{
//		this->m_Name = name;
//		this->m_Age = m_Age;
//	}
//
//	bool operator == (Person& p)
//	{
//		if (this->m_Name == p.m_Name && this->m_Age == p.m_Age)
//		{
//			return true;
//
//
//
//		}
//		else
//		{
//			return false;
//
//
//		}
//
//
//	}
//	bool operator!=(Person& p)
//	{
//		if (this->m_Name == p.m_Name && this->m_Age == p.m_Age)
//		{
//			return false;
//
//
//		}
//		else
//		{
//			return true;
//
//		}
//
//	}
//
//
//};
//函数调用运算符重载
class MyPrint {
public :
	void operator()(string text)
	{
		cout << text << endl;
	}
};
void test01()
{
	MyPrint myFunc;
	myFunc("helloword");
}
class MyAdd
{
public:
	int operator()(int v1, int v2)
	{
		return v1 + v2;
	}
};
void test02()
{
	MyAdd add;
	int ret = add(10, 10);
	cout << "ret" << ret << endl;
	//匿名对象调用
	cout << "MyAdd()(100,100)" << MyAdd()(100, 100) << endl;
}
void test()
{
	//MyInterger myInt;
	++myInt==myInt.operator++()
	//cout << ++myInt << endl;
	myInt==myInt.
	//myInt.operator++( 5);
	//cout << myInt++ << endl;
	//cout << myInt.operator++(5) << endl;
	//Person p1(18);
	//Person p2(20);
	//Person p3(30);
	///*p3.operator=(p1).operator=(p3);*/
	//p1 = p2 = p3;
	//cout << "p1的年龄为" << *p1.m_Age << endl;
	//cout << "p2的年龄为" << *p2.m_Age << endl;
	//cout << "p3的年龄为" << *p3.m_Age << endl;
	//Person a("孙悟空", 18);
	//Person b("孙悟空", 19);
	a.operator==(b)等价于a==b
	//if (a == b)
	//{
	//	cout << "a和b相等" << endl;
	//}
	//else
	//{
	//	cout << "a和b不相等" << endl;
	//}
	//if (a != b)
	//{
	//	cout << "a和b不相等" << endl;
	//}
	//else
	//{
	//	cout << "a和b相等" << endl;
	//}
}
int main() {
	test01();
	test02();
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_53944811

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值