码迷,mamicode.com
首页 > 其他好文 > 详细

重载操作符

时间:2015-08-06 01:48:50      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:

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

重载操作符

标签:

原文地址:http://www.cnblogs.com/c-slmax/p/4706232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!