zoukankan      html  css  js  c++  java
  • 重载操作符

    3.运算符重载的形式:

    运算符函数重载一般有两种形式:重载为类的成员函数和重载为类的非成员函数。非成员函数通常是友元。(可以把一个运算符作为一个非成员、非友元函数重载。但是,这样的运算符函数访问类的私有和保护成员时,必须使用类的公有接口中提供的设置数据和读取数据的函数,调用这些函数时会降低性能。可以内联这些函数以提高性能。)   

    1) 成员函数运算符

     运算符重载为类的成员函数的一般格式为:

        <函数类型> operator <运算符>(<参数表>)

        {

         <函数体>

        }

     当运算符重载为类的成员函数时,函数的参数个数比原来的操作数要少一个(后置单目运算符除外),这是因为成员函数用this指针隐式地访问了类的一个对象,它充当了运算符函数最左边的操作数。因此:

    (1) 双目运算符重载为类的成员函数时,函数只显式说明一个参数,该形参是运算符的右操作数。

    (2) 前置单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。

    (3) 后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。

        调用成员函数运算符的格式如下:

        <对象名>.operator <运算符>(<参数>)

        它等价于

        <对象名><运算符><参数>

     例如:a+b等价于a.operator +(b)。一般情况下,我们采用运算符的习惯表达方式。

    2) 友元函数运算符

     运算符重载为类的友元函数的一般格式为:

        friend <函数类型> operator <运算符>(<参数表>)

       {

         <函数体>

        }

    当运算符重载为类的友元函数时,由于没有隐含的this指针,因此操作数的个数没有变化,所有的操作数都必须通过函数的形参进行传递,函数的参数与操作数自左至右一一对应。

     调用友元函数运算符的格式如下:

        operator <运算符>(<参数1>,<参数2>)

        它等价于

        <参数1><运算符><参数2>

        例如:a+b等价于operator +(a,b)。

  • 相关阅读:
    P2567 [SCOI2010]幸运数字 DFS+容斥定理
    Codeforces Round #462 (Div. 2) C DP
    Codeforces Round #428 (Div. 2) C. dfs
    POJ 2079 最大三角形面积(凸包)
    POJ 3608 凸包间最短距离(旋转卡壳)
    2018年全国多校算法寒假训练
    Educational Codeforces Round 37 E. Connected Components?(图论)
    UVa 1440:Inspection(带下界的最小流)***
    BZOJ 1483:[HNOI2009]梦幻布丁(链表启发式合并)
    PAT L3-016:二叉搜索树的结构(暴力)
  • 原文地址:https://www.cnblogs.com/c-slmax/p/4706232.html
Copyright © 2011-2022 走看看