主要有两种方式:利用友元、类成员方法。
#include <iostream> using namespace std; /** *演示修饰符重载 *一般都用成员方法重载 *特殊的没有办法修改核心库的用友元的方法来重载 例如<< */ class Chicken { private: int weight; public: Chicken(int weight) { this->weight = weight; } ~Chicken() { delete this; } int getWeight(); void setWeight(int weight); friend int operator +(Chicken & a,Chicken & b); int operator -(Chicken & a); friend int operator ++(Chicken & a); int operator --(); friend int operator ++(Chicken & a,int); int operator --(int); friend ostream & operator << (ostream & out,Chicken & a); }; int Chicken::getWeight() { return this->weight; } void Chicken::setWeight(int weight) { this->weight = weight; } int operator +(Chicken & a,Chicken & b) { return a.weight+b.weight; } int Chicken::operator -(Chicken & a) { return this->weight-a.weight; } int operator ++(Chicken & a) { a.weight ++; return a.weight; } int Chicken::operator --() { this->weight --; return this->weight; } int operator ++(Chicken & a,int) { int b = a.weight; a.weight ++; return b; } int Chicken::operator --(int) { int b = this->weight; this->weight --; return b; } ostream & operator << (ostream & out,Chicken & a) { cout << "The weight is: " << a.weight; return out; } int main() { Chicken a(20); Chicken b(10); cout << a.getWeight() << endl; cout << b.getWeight() << endl; cout << a-b << endl; cout << a+b << endl; cout << ++a << endl; cout << a.getWeight() << endl; cout << --a << endl; cout << a.getWeight() << endl; cout << a++ << endl; cout << a.getWeight() << endl; cout << a-- << endl; cout << a.getWeight() << endl; cout << a << endl; return 0; }