zoukankan      html  css  js  c++  java
  • 重载运算符

    1.重载运算符的五大基本规则

    1)重载的运算符的参数数量应与运算对象数量一样多

    2)不能有默认实参(不然就违反了第一条)

    3)其参数至少有一个是类类型,不能全是内置类型

    4)只能重载已有运算符,且含义应保持一致

    5)不能改变运算符原有的优先级和结合律

    2.五大不能重载的运算符

    1)  .  (成员访问运算符)

    2)  .*  (成员指针访问运算符:这个还不太懂。。。)

    3)  ::  (域运算符)

    4)  ? :  (条件运算符:return num==1 ?  4 : 6)

    5)  sizeof  (既是关键字,又是运算符)

    3.重载运算符何时为成员函数?何时为非成员函数?

    3.1 IO运算符必须用用非成员函数重载

    1)当引起运算符调用的对象不是自身类的对象,而是其他类对象时,这种运算符必须声明为非成员函数

    2)这时如果运算符要访问类对象中的非public数据成员,那么就把重载的运算符声明为友元

    3)引起输入、输出运算符(>>、<<)调用的是流类对象cin或cout,而不是自身类的对象,所以重载它们时必须将其定义为非成员函数,同时IO运算符通常会读写类的非public数据成员,所以将它们声明为友元

    3.2必须用成员函数重载的运算符

    引起下面这些运算符调用的一定是自身类对象,所以必须用成员函数重载

    1)  =  (赋值运算符)

    2)  [ ]  (下标运算符)

    3)  ->  (箭头运算符)

    4)  ()  (函数调用运算符)

    4.重载递增和递减运算符

    区分前置(++i)和后置(i++)运算符

      为了让重载时区分这两种情况,后置版本有一个int型的形参,当使用后置运算符时,这个额外的形参可以使用,但通常并不使用,只用来区分后置版本和前置版本

  • 相关阅读:
    〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示
    〖Linux〗Kubuntu, the application 'Google Chrome' has requested to open the wallet 'kdewallet'解决方法
    unity, dll is not allowed to be included or could not be found
    android check box 自定义图片
    unity, ios skin crash
    unity, Collider2D.bounds的一个坑
    unity, ContentSizeFitter立即生效
    类里的通用成员函数应声明为static
    unity, Gizmos.DrawMesh一个坑
    直线切割凹多边形
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9721044.html
Copyright © 2011-2022 走看看