C++可以重載的運算符有:
1.前置++和后置++
2.前置--與后置--
3.+,-,*,/,%運算符
4.>,<,<=,>=,==,!=運算符
5.<<,>>(流提取與流插入)運算符
(特別注意:要對類的對象使用運算符,不能重載的運算符:=,& ,逗號運算符)
#include<iostream>using namespace std;class Operate{ friend ostream& operator<<(ostream &out, const Operate oper1);//<<運算符 friend istream& operator>>(istream &input, const Operate &oper2); //>>運算符public: Operate(int=1 ,int=1);//構造函數 Operate & operator-();//負號運算符 Operate & operator++();//前面++ Operate operator++(int); //后置++ Operate operator+(const Operate & oper);//+號運算符 Operate operator-(const Operate &oper);//相減運算法 Operate operator*(const Operate &oper);//相乘運算法 Operate operator/(const Operate &oper);//相除運算法 Operate operator%(const Operate &oper);//相除運算法 bool operator>(const Operate & oper);//>運算符 bool operator<(const Operate & oper);//<運算符 bool operator>=(const Operate & oper);//>=運算符 bool operator<=(const Operate & oper);//<=運算符 bool operator==(const Operate & oper);//==運算符 bool operator!=(const Operate & oper);//!=運算符 int getX();//獲取X int getY();//獲取YPRivate: int m_iX; int m_iY;};Operate::Operate(int x, int y){ m_iX = x; m_iY = y;}//負號運算符Operate& Operate::operator-(){ m_iX = -m_iX; m_iY = -m_iY; return *this;}//前面++Operate& Operate::operator++(){ m_iX++; m_iY++; return *this;}//后置++Operate Operate::operator++(int){ Operate old(*this); m_iX++; m_iY++; return old;}//+號運算符Operate Operate::operator+(const Operate &oper){ Operate temp; temp.m_iX = this->m_iX + oper.m_iX; temp.m_iY = this->m_iY + oper.m_iY; return temp;}//減運算符Operate Operate::operator-(const Operate &oper){ Operate temp; temp.m_iX = this->m_iX - oper.m_iX; temp.m_iY = this->m_iY - oper.m_iY; return temp;}//乘法運算符Operate Operate::operator*(const Operate &oper){ Operate temp; temp.m_iX = this->m_iX *oper.m_iX; temp.m_iY = this->m_iY * oper.m_iY; return temp;}//除運算符Operate Operate::operator/(const Operate &oper){ Operate temp; temp.m_iX = this->m_iX / oper.m_iX; temp.m_iY = this->m_iY / oper.m_iY; return temp;}//取模運算符Operate Operate:: operator%(const Operate &oper){ Operate temp; temp.m_iX = this->m_iX %oper.m_iX; temp.m_iY = this->m_iY % oper.m_iY; return temp;}//>運算符bool Operate:: operator>(const Operate & oper){ if (this->m_iX > oper.m_iX&&this->m_iY > oper.m_iY) return true; else return false;}//<運算符bool Operate:: operator<(const Operate & oper){ if (this->m_iX <oper.m_iX&&this->m_iY <oper.m_iY) return true; else return false;}//<=運算符bool Operate:: operator<=(const Operate & oper){ if (this->m_iX <=oper.m_iX&&this->m_iY <=oper.m_iY) return true; else return false;}//>=運算符bool Operate:: operator>=(const Operate & oper){ if (this->m_iX >=oper.m_iX&&this->m_iY >=oper.m_iY) return true; else return false;}//==運算符bool Operate:: operator==(const Operate & oper){ if (this->m_iX ==oper.m_iX&&this->m_iY ==oper.m_iY) return true; else return false;}//!=運算符bool Operate:: operator!=(const Operate & oper){ if (this->m_iX !=oper.m_iX&&this->m_iY !=oper.m_iY) return true; else return false;}//<<運算符的友元函數ostream & operator<<(ostream &out, const Operate oper1){ out << oper1.m_iX << "," << oper1.m_iY << endl; return out;}//>>運算符的友元函數istream & operator>>(istream &input, const Operate &oper2){ input >> oper2.m_iX; input>> oper2.m_iY; return input;}int Operate::getX(){ return m_iX;}int Operate::getY(){ return m_iY;}int main(){//main函數測試 }學會巧妙的使用運算符,在寫很多程序中尤為重要。運算符重載有助于C++的可擴展性,它是C++最吸引人的特征之一。當運算符重載比完成相同工作的函數調用程序更清晰的時候,請選擇運算符重載!
新聞熱點
疑難解答
圖片精選