10.10 作业

全局函数实现运算符重载 

#include "05_fun.h"

// 全局函数实现运算符重载

// 算数运算符重载 + - * / %
const Per operator+(const Per &L, const Per &R)
{
    Per temp;
    temp.a = L.a + R.a;
    temp.b = L.b + R.b;
    return temp;
}
const Per operator-(const Per &L, const Per &R)
{
    Per temp;
    temp.a = L.a - R.a;
    temp.b = L.b - R.b;
    return temp;
}
const Per operator*(const Per &L, const Per &R)
{
    Per temp;
    temp.a = L.a * R.a;
    temp.b = L.b * R.b;
    return temp;
}
const Per operator/(const Per &L, const Per &R)
{
    Per temp;
    temp.a = L.a / R.a;
    temp.b = L.b / R.b;
    return temp;
}
const Per operator%(const Per &L, const Per &R)
{
    Per temp;
    temp.a = L.a % R.a;
    temp.b = L.b % R.b;
    return temp;
}

// 关系运算符重载 > >= < <= == !=
bool operator>(const Per &L, const Per &R)
{
    if (L.a > R.a && L.b > R.b)
        return true;
    else
        return false;
}
bool operator>=(const Per &L, const Per &R)
{
    if (L.a >= R.a && R.a >= R.b)
        return true;
    else
        return false;
}
bool operator<(const Per &L, const Per &R)
{
    if (L.a < R.a && L.b < R.b)
        return true;
    else
        return false;
}
bool operator<=(const Per &L, const Per &R)
{
    if (L.a <= R.a && L.b <= R.b)
        return true;
    else
        return false;
}
bool operator==(const Per &L, const Per &R)
{
    if (L.a == R.a && L.b == R.b)
        return true;
    else
        return false;
}
bool operator!=(const Per &L, const Per &R)
{
    if (L.a != R.a && L.b != R.b)
        return true;
    else
        return false;
}

// 赋值运算符重载 += -= *= /= %=
Per &operator+=(Per &L, const Per &R)
{
    L.a += R.a;
    L.b += R.b;
    return L;
}
Per &operator-=(Per &L, const Per &R)
{
    L.a -= R.a;
    L.b -= R.b;
    return L;
}
Per &operator*=(Per &L, const Per &R)
{
    L.a *= R.a;
    L.b *= R.b;
    return L;
}
Per &operator/=(Per &L, const Per &R)
{
    L.a /= R.a;
    L.b /= R.b;
    return L;
}
Per &operator%=(Per &L, const Per &R)
{
    L.a %= R.a;
    L.b %= R.b;
    return L;
}

对应头文件

#ifndef __05FUN_H__
#define __05FUN_H__
#include 

using namespace std;

class Per // 全局
{
    // 算数运算符重载 + - * / %
    friend const Per operator+(const Per &L, const Per &R); // +
    friend const Per operator-(const Per &L, const Per &R); // -
    friend const Per operator*(const Per &L, const Per &R); // *
    friend const Per operator/(const Per &L, const Per &R); // /
    friend const Per operator%(const Per &L, const Per &R); // %

    // 关系运算符重载 > >= < <= == !=
    friend bool operator>(const Per &L, const Per &R);  // >
    friend bool operator>=(const Per &L, const Per &R); // >=
    friend bool operator<(const Per &L, const Per &R);  // <
    friend bool operator<=(const Per &L, const Per &R); // <=
    friend bool operator==(const Per &L, const Per &R); // ==
    friend bool operator!=(const Per &L, const Per &R); // !=

    // 赋值运算符重载 += -= *= /= %=
    // operator=只能是成员函数
    friend Per &operator+=(Per &L, const Per &R); // +=
    friend Per &operator-=(Per &L, const Per &R); // -=
    friend Per &operator*=(Per &L, const Per &R); // *=
    friend Per &operator/=(Per &L, const Per &R); // /=
    friend Per &operator%=(Per &L, const Per &R); // %=

private:
    int a;
    int b;

public:
    Per() {}
    Per(int a, int b) : a(a), b(b) {}
    void show() { cout << a << ' ' << b << endl; }
};
#endif

成员函数实现运算符重载

#include "04_fun.h"

// 成员函数实现运算符重载

// 算数运算符重载 + - * / %
const Per Per::operator+(const Per &p) const
{
    Per temp;
    temp.a = a + p.a;
    temp.b = b + p.b;
    return temp;
}
const Per Per::operator-(const Per &p) const
{
    Per temp;
    temp.a = a - p.a;
    temp.b = b - p.b;
    return temp;
}
const Per Per::operator*(const Per &p) const
{
    Per temp;
    temp.a = a * p.a;
    temp.b = b * p.b;
    return temp;
}
const Per Per::operator/(const Per &p) const
{
    Per temp;
    temp.a = a / p.a;
    temp.b = b / p.b;
    return temp;
}
const Per Per::operator%(const Per &p) const
{
    Per temp;
    temp.a = a % p.a;
    temp.b = b % p.b;
    return temp;
}

// 关系运算符重载 > >= < <= == !=
bool Per::operator>(const Per &p)
{
    if (a > p.a && b > p.b)
        return true;
    else
        return false;
}
bool Per::operator>=(const Per &p)
{
    if (a >= p.a && b >= p.b)
        return true;
    else
        return false;
}
bool Per::operator<(const Per &p)
{
    if (a < p.a && b < p.b)
        return true;
    else
        return false;
}
bool Per::operator<=(const Per &p)
{
    if (a <= p.a && b <= p.b)
        return true;
    else
        return false;
}
bool Per::operator==(const Per &p)
{
    if (a == p.a && b == p.b)
        return true;
    else
        return false;
}
bool Per::operator!=(const Per &p)
{
    if (a != p.a && b != p.b)
        return true;
    else
        return false;
}

// 赋值运算符重载 += -= *= /= %=
Per &Per::operator=(const Per &p)
{
    if (this != &p)
    {
        a = p.a;
        b = p.b;
    }

    return *this;
}
Per &Per::operator+=(const Per &p)
{
    a += p.a;
    b += p.b;
    return *this;
}
Per &Per::operator-=(const Per &p)
{
    a -= p.a;
    b -= p.b;
    return *this;
}
Per &Per::operator*=(const Per &p)
{
    a *= p.a;
    b *= p.b;
    return *this;
}
Per &Per::operator/=(const Per &p)
{
    a /= p.a;
    b /= p.b;
    return *this;
}
Per &Per::operator%=(const Per &p)
{
    a %= p.a;
    b %= p.b;
    return *this;
}

对应头文件

#ifndef __04FUN_H__
#define __04FUN_H__
#include 

using namespace std;

class Per // 成员
{
private:
    int a;
    int b;

public:
    Per() {}
    Per(int a, int b) : a(a), b(b) {}
    void show() { cout << a << ' ' << b << endl; }

    // 算数运算符重载 + - * / %
    const Per operator+(const Per &p) const;
    const Per operator-(const Per &p) const;
    const Per operator*(const Per &p) const;
    const Per operator/(const Per &p) const;
    const Per operator%(const Per &p) const;

    // 关系运算符重载 > >= < <= == !=
    bool operator>(const Per &p);
    bool operator>=(const Per &p);
    bool operator<(const Per &p);
    bool operator<=(const Per &p);
    bool operator==(const Per &p);
    bool operator!=(const Per &p);

    // 赋值运算符重载 = += -= *= /= %=
    Per &operator=(const Per &p);
    Per &operator+=(const Per &p);
    Per &operator-=(const Per &p);
    Per &operator*=(const Per &p);
    Per &operator/=(const Per &p);
    Per &operator%=(const Per &p);
};

#endif

主函数

// #include "04_fun.h"
#include "05_fun.h"

int main()
{
    Per p1(1, 1);
    Per p2(2, 2);

    // 算数运算符重载 + - * / %
    Per p3 = p1 + p2;
    p3.show();
    Per p4 = p1 - p2;
    p4.show();
    Per p5 = p1 * p2;
    p5.show();
    Per p6 = p1 / p2;
    p6.show();
    Per p7 = p1 % p2;
    p7.show();

    // 关系运算符重载 > >= < <= == !=
    if (p1 > p2)
    {
        cout << "p1>p2" << endl;
    }
    else if (p1 >= p2)
    {
        cout << "p1>=p2" << endl;
    }
    else if (p1 < p2)
    {
        cout << "p1

你可能感兴趣的:(开发语言)