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日

悬赏问题

  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?
  • ¥15 QTOF MSE数据分析
  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?