运算符重载

1、符号重载:

 c++符号增加支持自定类型的操作数.实际是一个特殊函数.函数名为:

    operator 符号
  

c++ 支持可重载符号:
   算术运算符:+,-,*,/,%,++,--
   位操作运算符:&,|,~,^,<<,>>
   逻辑运算符:!,&&,||;
   比较运算符:<,>,>=,<=,==,!=;
   赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=;
   其他运算符:[],(),->,,(逗号运算符)
   operator new  operator new[]  operator delete  operator delete[]
 

2、c++ 不支持重载的符号:
   . 成员选择
   .* 通过到成员的指针做成员选择
   :: 作用域解析
   ?: 三元条件运算符
   sizeof


3、  符号重载语法:
     返回值类型  operator 符号(参数列表);


4、 符号重载特点:
  1.不是创建一个新符号
  2.不改变符号优先级
  3.不改变符号的结合性
  4.不改变符号操作个数
 
5、 符号重载定义两个方式:
  1.类的成员函数
  2.友元函数
  类的成员函数重载,如果重载符号需要两个操作数,在定义是只需要一个参数,另一个用this代替
  如果重载符号需要一个操作数,在定义是无参,用this代替
  =,(),[] 和-> 只能使用成员函数方式重载

  友元函数:重载符号需要几个操作数就定义几个参数.
 >>  << 只能使用友元函数方式重载
  
6、 前置++:即++运算符位于操作数的前面,例如:++i;
 后置++:即++运算符位于操作数后面,例如:i++;
 注意一下几点:
 1、前置++重载时没有参数,而后置++重载时有参数。不会使用其参数,仅仅是区分用。
       可以理解为前置++后面有参数了,所以不需要参数
 2、前置++需要返回引用,因为重载自加运算符后可以返回对象的引用,
      以方便在表达式中连续使用。而后置++返回的不是引用,所以不能进行连续使用。

复数:a+bi

 
原文地址:https://www.cnblogs.com/ice-arrow/p/11120417.html