例子:用友元重载运算符 class counter int value pl ublic counter operator=( int num);/表示对象=整数 friend counter operator+( counterobj, int num);/表示对象+整数 friend counter operator+(innm, counter obj));/表示整数+对象 counter counter: operator=(int num)t value=num: return *this: counter operator+ (counter obj, int numt counter tmp; tmp value=obj. value+num; return tmp counter operator+(int num, counterobjt counter tmp; tmp value=obj. value+num; return tmp;
2021/2/10 16 class counter{ int value; public: counter operator=(int num);//表示对象=整数 friend counter operator+(counter obj,int num); //表示对象+整数 friend counter operator+(int num,counter obj); //表示整数+对象 }; counter counter::operator=(int num){ value=num; return *this; } counter operator+(counter obj,int num){ counter tmp; tmp.value=obj.value+num; return tmp; } counter operator +(int num,counter obj){ counter tmp; tmp.value=obj.value+num; return tmp; } • 例子:用友元重载运算符
void main( counter objl obj1-=10;/使用重载的=运算符 counter obj2=obj1+5;/使用重载运算符函数 operator+ (counter;int) counter obj3=3+obj2;/使用重载运算符函数 Coperator+ (int, counter) 2021/2/10 17
2021/2/10 17 void main( ) { counter obj1; obj1=10;//使用重载的=运算符 counter obj2=obj1+5;//使用重载运算符函数operator+(counter,int) counter obj3=3+obj2; //使用重载运算符函数operator+(int, counter) }
例子:用友元重载++运算符 class point class pointt int x, y; Int X, y; public: public: Point(int a=0,int b=0): x (a),y(b) Point(int a=0,int b=0): x(a), y(b Point operator++Oi friend Point operator++(Point obj) +;v++ return *this: Point operator++(Point obit obj. x++; obj. y++; };/)成员函数重载 return obj: }/用友元函数和重载 void main( Point pointl(1, 3); Point point2=++pointl; 18
2021/2/10 18 class Point{ int x, y; public: Point(int a=0,int b=0):x(a),y(b){ } Point operator++( ){ x++; y++; return *this; } };//用成员函数重载 • 例子:用友元重载++运算符 class Point{ int x, y; public: Point(int a=0,int b=0):x(a),y(b){ } friend Point operator++( Point obj); }; Point operator++(Point obj){ obj.x++; obj.y++; return obj; } //用友元函数和重载 void main( ) { Point point1(1,3); Point point2=++point1; }
class point X,y; public Point(int a=0,int b=0): x(a), y(b friend Point operator++( Point &obj); Point operator++(Point &obit obj. x++; obj. y++ return obj; void main( Point pointl(1, 3); Point point2=++pointl; 通过传递引用,可以改变对象的内部状态 19
2021/2/10 19 class Point{ int x, y; public: Point(int a=0,int b=0):x(a),y(b){ } friend Point operator++( Point &obj); }; Point operator++(Point &obj){ obj.x++; obj.y++; return obj; } void main( ) { Point point1(1,3); Point point2=++point1; } //通过传递引用,可以改变对象的内部状态
元和二元运算符 一元运算符 对任意一元运算符@,将其作为成员函数重 载时的定义及调用方式为: type className: operator@(; className obi @ob或obj@ 此时运算符重载函数 operator@的参数表为 空,因为所需的一个操作数通过this指针隐 含传递。 2021/2/10
2021/2/10 20 一元和二元运算符 • 一元运算符: 对任意一元运算符@,将其作为成员函数重 载时的定义及调用方式为: type className::operator@(); className obj; @obj 或 obj@ • 此时运算符重载函数operator@的参数表为 空,因为所需的一个操作数通过this指针隐 含传递