Copy assignment function, anonymous object, friend, constant member function/constant object, operator overloading

Conditional operator overloading

//运算符重载: 重新定义运算符,赋予其他功能,以适应不同的数据类型
//成员函数实现运算符重载
//全局函数实现运算符重载

//比较运算符: > < >= <= == !=

#include <iostream>
using namespace std;
//封装类 Person

class Person
{
    friend bool operator<(const Person &L, const Person &R);  // 设置operator<函数为该类的友元,允许访问该类的所有成员
    friend bool operator==(const Person &L, const Person &R); // 设置operator==函数为该类的友元,允许访问该类的所有成员
    string name;
    int age;
public:
    //无参构造函数
    Person()
    {

    }
    //有参构造函数
   Person(string name, int age) : name(name), age(age)
   {

   }

   //成员函数实现大于运算符重载
   bool operator>(const Person &p)
   {
       if(name >= p.name && age >= p.age)
       {
           return  true;
       }
       else
       {
           return false;
       }
   }

   //成员函数实现不等于运算符
   bool operator!=(const Person &R)
   {
       if(name!=R.name || age != R.age)
       {
           return true;
       }
       else
       {
           return false;
       }
   }

};

//全局函数实现小于运算符重载
bool operator<(const Person &L, const Person &R)
{
    if(L.name < R.name && L.age <R.age)
    {
        return  1;
    }
    else
    {
        return  0;
    }
}

bool operator==(const Person &L, const Person &R)
{
    if(L.name == R.name && L.age == R.age)
    {
        return true;
    }
    else
    {
        return false;
    }
}
int main()
{
    Person p1("ZS", 17);    //实例化一个类对象
    Person p2("ZA", 14);    //实例化一个类对象
    Person p3("yy", 16);
    Person p4("zz", 16);
    Person p5("zz", 16);
    if(p1>p2)   //成员函数运算符重载 本质为:p1.operator>(const Person &p2), 左操作值调用成员函数 operator, 参数为p2的引用
    {
        cout << "p1 > p2" << endl;
    }

    if(p3<p4)  //全局函数运算符重载,本质为operator<(const Person &p1, const Person &p2)  调用operator<函数,参数为怕/p2的引用
    {
        cout << "p3 < p4" << endl;
    }
    if(p3 != p4)   //成员函数运算符重载,本质为p3.operator!=(const Person &p4)
    {
        cout << "p3 != p4" << endl;
    }
    if(p4 == p5)   //全局函数运算符重载:本质为: operate==(const Person &P4, const Person &p5);
    {
        cout << "p5 == p4" << endl;
    }
    return 0;
}

Copy assignment function, anonymous object, friend, constant member function/constant object, operator overloading

 

Guess you like

Origin blog.csdn.net/qq_46766479/article/details/132483309