• 重载操作符


    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)。

  • 相关阅读:
    把sqlserver2000的备份文件恢复到sqlserver2008中
    application、static、Session、ViewState 的区别
    命令行安装卸载服务(安装卸载.net写的服务)
    C# Windows服务自动安装与注册
    C# System.Guid.NewGuid()
    <base target="_self"/>
    C#写的windows服务,在启动时提示“服务启动后又停止了,一些服务自动停止”
    MVC中validateRequest="false"不起作用
    PL/SQL导出insert语句
    MO和MT
  • 原文地址:https://www.cnblogs.com/c-slmax/p/4706232.html
Copyright © 2020-2023  润新知