整理部分C++操作符重載,直接上代碼:
myOperator.h
#pragma once
#include <iostream>
using namespace std;
class myOperator
{
public:
myOperator():x(0),y(0){
a[0] = a[1] = 0;
}
friend ostream& operator<<(ostream& os, const myOperator& o);
friend istream& operator>>(istream& is, myOperator& o);
friend myOperator operator+(myOperator& p1, myOperator& p2); // 對象相加
friend myOperator operator+(int value, myOperator& p1); // 對象和值相加
friend bool operator==(const myOperator& p1, const myOperator& p2);
friend bool operator!=(const myOperator& p1, const myOperator& p2);
public:
myOperator& operator=(const myOperator& p1);
myOperator& operator+=(const myOperator& p1);
int& operator[](int& i){return *(a+i);}
const int& operator[](const int& i){return *(a+i);}
private:
string name;
int x;
int y;
int a[2];
};
myOperator.cpp
#include "myOperator.h"
#include <string>
ostream& operator<<(ostream& os, const myOperator& o)
{
os<<o.x<<o.y<<o.name;
return os;
}
istream& operator>>(istream& is, myOperator& o)
{
is>>o.x>>o.y>>o.name;
return is;
}
myOperator operator+(myOperator& p1, myOperator& p2)
{
myOperator temp;
temp.x = p1.x + p2.x;
temp.y = p1.y + p2.y;
temp.name = p1.name + p2.name;
return temp;
}
myOperator operator+(int value, myOperator& p1)
{
myOperator temp;
temp.x = p1.x + value;
temp.y = p1.y + value;
// temp.name = p1.name.size() + value;
return temp;
}
bool operator==(const myOperator& p1, const myOperator& p2)
{
return (p1.x==p2.x)&&(p1.y==p2.y)&&(p1.name==p2.name);
}
bool operator!=(const myOperator& p1, const myOperator& p2)
{
return !(p1==p2);
}
myOperator& myOperator::operator=(const myOperator& p1)
{
this->x = p1.x;
this->y = p1.y;
this->name = p1.name;
return *this;
}
myOperator& myOperator::operator+=(const myOperator& p1)
{
this->x += p1.x;
this->y += p1.y;
this->name += p1.name;
return *this;
}