#include<iostream>//c++的标准的输入和输出流
using namespace std;//引用标准的名空间std
class person
{
public:
person(string name, int age)
{
this->m_age = age;
this->m_name = name;
}
//判断自定义数据类型是否相等,要用等号运算符重载
//可以根据返回的真假来判断
//所以返回值用bool类型的
//且两个自定义数据类型的用成员函数进行比较只需要传入一个参数就行
//比较两个自定义数据类型的成员函数的本质为p1.operator==(p2)
bool operator==(const person& p)//利用成员函数判断两个自定义数据类型的数据是否相等
{
if (this->m_age == p.m_age && this->m_name == p.m_name)
{//注意上面有两个等号表示相等,不要误写成了一个等号,表示成赋值的操作了
return true;
}
else
{
return false;
}
}
string m_name;
int m_age;
};
void test01()
{//利用成员函数判断两个自定义数据类型的数据是否相等
person p1("张三", 18);
person p2("张三", 18);
bool ret;
if (ret = p1.operator==(p2))
{
cout << "相等" << endl;
}
else
{
cout << "不相等" << endl;
}
}
//比较两个自定义数据类型的全局函数的本质为operator==(p1, p2)
bool operator==(const person& p1, const person& p2)
{
if (p1.m_age == p2.m_age && p1.m_name == p2.m_name)
{
return true;
}
else
{
return false;
}
}
void test02()
{
// 利用全局函数判断两个自定义数据类型的数据是否相等
bool ret;
person p1("zhangsan", 18);
person p2("zhangsan", 18);
if (ret = operator==(p1, p2))
{
cout << "相等" << endl;
}
else
{
cout << "不相等" << endl;
}
}
int main(void)
{
test01(); //利用成员函数判断两个自定义数据类型的数据是否相等
test02();// 利用全局函数判断两个自定义数据类型的数据是否相等
system("pause");
//system("PAUSE")和system("pause")作用和效果一样,因为dos命令是不区分大小写的。
//该语句是暂停的意思:等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
return 0;//程序正常运行返回一个0;
}
利用全局函数和局部函数的形式重载关系运算符(等于和不等于) c++ 简单易懂
最新推荐文章于 2023-07-22 09:04:24 发布