运算符重载

1)重载运算符的基本知识


//其实就是编译器给出的一种特殊调用函数的方法


//重载运算符是具有特殊名称的函数。(操作符函数)


//二元运算符是一个具有两个参数的函数,一元运算符是一个具有一个参数的函数


//::  .*  .  ?:  sizeof四种操作符不能重载


//符号无论改为什么用途,优先级、结合性、操作数数目不变


//不再具备短路求值特性


//重载操作符必须具有一个类类型(或枚举)操作数


2)运算符重载的两种形式:
1.类成员运算符重载
(看起来操作数少了1,但作为成员函数的操作符,隐藏了一个this形参,限定为第一操作数)
(左操作数只能是该类的对象)
2.友元运算符重载


3)更好地了解运算符重载的实质
//可以像调用普通函数一样调用重载运算符函数
/*比如,
 *友元运算符重载:
 *item1 + item2相当于operator+(item1, item2)
 *类成员运算符重载:
 *item1 += item2相当于item1.operator+=(item2)*/


4)重载运算符的设计
如何选择成员还是友元实现:
1.必须定义为成员的操作符:
赋值(=)、下标([])、调用(())、成员访问箭头(->)——定义为友元操作符会编译错误
2.一般为成员的操作符:
复合赋值操作符
自增自减和解引用(*)
3.一般为普通非成员友元的操作符
对称的操作符:算术(+-*/) 、相等操作符、关系操作符、位操作符
4.必须为非成员函数(友元)的操作符
输入输出<< >>操作符


5)
虽然是函数,但不能有默认参数(有的话调用时很奇怪!!)

你可能感兴趣的:(运算符重载)