Eve1yn0 2023-01-18 11:24 采纳率: 64.5%
浏览 69
已结题

关于重载==运算符的问题

如下代码所示,不理解我定义的Person类里的==重载函数为什么这么写? bool operator==(const Person &p)中的this->m_Age和o.m_Age搞糊涂了

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

//自定义数据类型
class Person
{
public:
    Person(string name, int age)
    {
        this->m_Name = name;
        this->m_Age = age;
    }
                //不理解下面这个重载函数,希望各位大佬帮我看看
    bool operator==(const Person &p)
    {
        //cout << "p.m_Age:" << p.m_Age << "\t this->m_Age:" << this->m_Age << endl;
        if (p.m_Age == this->m_Age)
        {
            return true;
        }

        else
        {
            return false;
        }
    }

    string m_Name;
    int m_Age;
};

class myPrint2
{
public:

    void operator()(const Person & p)
    {
        cout << "姓名:" << p.m_Name << "\t年龄:" << p.m_Age << endl;
    }
};

void test02()
{
    Person p1("aa", 10);
    Person p2("bb", 30);
    Person p3("cc", 20);
    Person p4("dd", 10);
    Person p5("ee", 40);
    Person p6("ff", 10);
    vector<Person>v;
    v.push_back(p1);
    v.push_back(p2);
    v.push_back(p3);
    v.push_back(p4);
    v.push_back(p5);
    v.push_back(p6);
    //将所有10替换为1000
    Person pOld("aa", 10);
    Person pNew("aa", 1000);
    cout << "替换前:" << endl;
    for_each(v.begin(), v.end(), myPrint2());
    cout << "\n替换后:" << endl;
    replace(v.begin(), v.end(), pOld, pNew);
    
    for_each(v.begin(), v.end(), myPrint2());
}

int main()
{
    //test01();
    test02();

    system("pause");
    return 0;
}

  • 写回答

7条回答 默认 最新

  • cjh4312 2023-01-18 11:31
    关注

    对着呢呀,比较两个人是否相等的时候,就是比较他们的年龄。p是传进来的对象,this是当前对象

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 1月26日
  • 已采纳回答 1月18日
  • 修改了问题 1月18日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分