C++操作符重載

整理部分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;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章