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

    一.一般形式
    返回类型 operator 操作符 (参数列表)
     
    二.成员函数or友元函数?
    • 大部分运算符重载函数既可以是成员函数,也可以使友元函数。使用友元函数的形式如下:
            friend 返回类型 operator 操作符 (参数列表)
            eg:
            成员函数:Int operator + (const Int &);
            友元函数:friend Int operator + (const Int &, const Int &);
             注意:跟成员函数不同的是参数列表。友元函数的参数列表中比成员函数多一个参数,因为成员函数可以通过this指针隐式的访问对象的参数,而友元必须指定。
    • 运算符重载函数定义为成员函数或是友元函数的几点依据:
      •  重载运算符(),【】,->或任意赋值运算符时,必须为成员函数
      • 当运算符重载函数是一个成员函数时,最左边的操作数必须是类的一个对象(或引用),例如上例中+左边为Int。如果左边的操作数必须是一个不同类的对象或内部类型的对象,运算符函数必须是友元函数。(解释:通过成员函数重载的运算符是由运算符左边的对象调用的,该对象通过this指针隐式传递,因此,最左边的操作数必须是一个对象。将运算符重载函数声明为友元函数时,因为没有隐含的this指针,所以必须显示指定所有参数。
      • 对二元运算符,成员函数带一个参数,友元函数带两个参数。对一元运算符,成员函数不带参数,友元函数带一个阐述。

    三.可重载or不可重载的运算符

    不可被重载的运算符:
    .*,    ::,    ?:,    sizeof
     
    四.其他
    1.前置后置运算符如何区分?
    前置:Integer& operator ++ ()            friend Integer& operator ++(Integer & a);
    后置:Integer operator ++ (int)            friend Integer operator ++ (Integer & a, int);
    int只是一个伪值,用于区分前置后置运算符
  • 相关阅读:
    参考资料
    利用docker compose启动gitlab及runner
    在gitlab上setup CI
    git ssh端口号变更之后所需要的修改
    使用Docker Image跑Gitlab
    用Docker Compose启动Nginx和Web等多个镜像
    .NET core mvc on Docker
    ubuntu 挂载windows共享目录的方法
    13-14 元旦随想
    Uva 10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes?
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4636155.html
Copyright © 2011-2022 走看看