//General ArithmeticFriend Aoperator+(ConstA & LHS,ConstA &RHS); friend Aoperator-(ConstA & LHS,ConstA &RHS); friend Aoperator*(ConstA & LHS,ConstA &RHS); friend Aoperator/(ConstA & LHS,ConstA &RHS); friend Aoperator%(ConstA & LHS,ConstA &RHS); friend Aoperator*(ConstA & LHS,Const int& RHS);//scalar operations, if presentFriend Aoperator*(Const int& LHS,ConstA & RHS);//scalar operations, if present//Relational OperatorsFriendBOOL operator== (ConstA & LHS,ConstA &RHS); FriendBOOL operator!= (ConstA & LHS,ConstA &RHS); FriendBOOL operator< (ConstA & LHS,ConstA &RHS); FriendBOOL operator<= (ConstA & LHS,ConstA &RHS); FriendBOOL operator> (ConstA & LHS,ConstA &RHS); FriendBOOL operator>= (ConstA & LHS,ConstA &RHS);//logical OperatorsFriendBOOL operator|| (ConstA & LHS,ConstA &RHS); FriendBOOL operator&& (ConstA & LHS,ConstA &RHS);BOOLA::operator!();//positive and negative operatorsA::operator+();//take positiveA::operator-();//take negative//Increment decrement operatorA & A::operator++();//prefix incrementA::operator++(int);//suffix IncrementA & A::operator--();//prefix decrementA::operator--(int);//suffix Decrement//Dynamic Storage Management operators: Global or member functions can bevoid*operator New(std::size_t size)Throw(bad_alloc);void*operator New(std::size_t size,ConstStd::nothrow_t &)Throw();void*operator New(std::size_t size,void*Base)Throw();void*operator New[] (std::size_t size)Throw(bad_alloc);void operator Delete(void*p);void operator Delete[](void*p);//assignment operatorA &operator= (A &RHS); A&operator= (ConstA &RHS); A&operator= (A &&RHS); A&operator+= (ConstA &RHS); A&operator-= (ConstA &RHS); A&operator*= (ConstA &RHS); A&operator%= (ConstA &RHS); A&operator&= (ConstA &RHS); A&operator/= (ConstA &RHS); A&operator|= (ConstA &RHS); A&operator^= (ConstA &RHS); A&operator<<= (intN); A&operator>>= (intn);//Subscript operatorT & A::operator[] (inti);ConstT & A::operator[](intIConst;//function call operatorT A::operator()(...);//Optional Parameters//Type conversion OperatorsA::operator Char*()Const; A::operator int()Const; A::operator Double()Const;//comma operatorT2operator, (T1 t1, T2 T2);//overloading is not recommended//pointers and operator operatorsA * A::operator& ();//accessor operatorA & A::operator*();//Leading operatorsConstA & A::operator*()Const;//Leading operatorsC * A::operator();//optional operatorConstC * A::operator()Const;//optional operatorC & A::operator->* (...);//operator, pointer to class member//stream operatorFriend Ostream &operator<< (Ostream &os,ConstA &a) friend IStream&operator>> (IStream & is, A &a);
C + + Learning Note 15: List of function prototypes for operator overloading (recommended)