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型的形参,当使用后置运算符时,这个额外的形参可以使用,但通常并不使用,只用来区分后置版本和前置版本

  • 相关阅读:
    Remoting系列(一)Remoting的基本概念
    软件设计师
    如果让我重做一次研究生
    VS2005Web控件拖动
    JS实现文本框回车提交
    SqlDataReader
    SqlCommand.ExecuteScalar
    DataSet
    电子商务部应该做些什么?【转】
    e
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9721044.html
Copyright © 2011-2022 走看看