#include<iostream>
#include<string>
#include<vector>
using namespace std;
#include<algorithm>
#include<functional>
#include<ctime>
//关系运算符重载
class Person
{
public:
Person(string name, int age)
{
m_age = age;
m_name = name;
}
//重载==
bool operator==(Person&p)
{
if (this->m_name == p.m_name && this->m_age == p.m_age)
{
return true;
}
return false;
}
bool operator!=(Person& p)
{
if (this->m_name == p.m_name && this->m_age == p.m_age)
{
return false;
}
return true;
}
string m_name;
int m_age;
};
void test01()
{
Person p1("Tom", 18);
Person p2("Tom", 18);
if (p1 == p2)
{
cout << "p1和p2相等" << endl;
}
else
{
cout << "不相等" << endl;
}
}
//函数调用运算符重载
class MyPrint
{
public:
//重载函数调用运算符
void operator()(string test)
{
cout << test << endl;
}
};
void MyPrint02(string test)
{
cout << test << endl;
}
void test02()
{
MyPrint myprint;
myprint("hello");//由于使用起来类似于函数调用,所以称为仿函数
MyPrint02("hello");
}
//仿函数非常灵活 没有固定写法
//加法类
class MyAdd
{
public:
int operator()(int num1, int num2)
{
return num1 + num2;
}
};
void test03()
{
MyAdd myadd;
cout << myadd(100, 100) << endl;
//匿名函数对象 当前行执行完立即被释放
cout << MyAdd()(100, 100) << endl;
}
int main()
{
test03();
}
运算符重载3
最新推荐文章于 2023-10-05 21:22:29 发布