重载运算符
Posted joezzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载运算符相关的知识,希望对你有一定的参考价值。
五大基本规则
1.重载的运算符的参数数量应与运算对象数量一样多
2.不能有默认实参(不然就违反了第一条)
3.其参数至少有一个是类类型,不能全是内置类型
4.只能重载已有运算符,且含义应保持一致
5.不能改变运算符原有的优先级和结合律
五大不能重载的运算符
1. .(成员访问运算符)
2. .*(成员指针访问运算符:这个还不太懂。。。)
3. ::(域运算符)
4. ? :(条件运算符:return num==1 ? 4 : 6)
5. sizeof(既是关键字,又是运算符)
重载IO运算符
重载输入输出运算符(>>、<<)必须将其定义为非成员函数(不含this指针),因为引起调用的是流类对象cin或cout,而不是自身类的对象,所以一般声明为友元。
重载递增和递减运算符
区分前置(++i)和后置(i++)运算符:
为了让重载时区分这两种情况,后置版本有一个int型的形参,当使用后置运算符时,编译器为这个形参提供一个值为0的实参。但这个形参其实并不使用,只用来做区分。
必须用成员函数重载的运算符
1. =(赋值运算符)
2. [ ](下标运算符)
3. ->(箭头运算符)
4. ()(函数调用运算符)
以上是关于重载运算符的主要内容,如果未能解决你的问题,请参考以下文章