当前位置:  编程技术>c/c++/嵌入式

C++运算符重载的方法详细解析

    来源: 互联网  发布时间:2014-10-21

    本文导语:  运算符重载实质上是函数的重载 重载运算符的函数一般格式如下: 函数类型    operator  运算符名称    (形参表列) {对运算符的重载处理} 例如,想将“+”用于Complex(复数)的加法运算,函数的原型可以是这样的: 代码...

运算符重载实质上是函数的重载

重载运算符的函数一般格式如下:

函数类型    operator  运算符名称    (形参表列)

{对运算符的重载处理}

例如,想将“+”用于Complex(复数)的加法运算,函数的原型可以是这样的:

代码如下:

Complex operator + (Complex & c1,Complex &c2);

其中,operator是关键字,时候专门用于定义重载运算符的函数的,运算符名称就是C++提供给用户的预定运算符。

注意:函数名是由operator和运算符组成。

上面的operator+就是函数名,意思是“对运算符+重载“。只要掌握这点,这可以发现,这类函数和其他函数在形式上没有什么区别。

两个形参是Complex类对象的引用,要求实参为Complex类对象。

在定义了重载运算符后,可以说:函数operator+重载了运算符+。

在执行复数相加的表达式c1+c2时(假设c1+c2都已被定义为Complex),系统就会调用operator+函数,把c1+c2作为实参,与形参进行虚实结合。

为了说明把运算符重载后,执行表达式就是调用函数的过程,可以把两个整数相加也想象称为调用下面的函数:

代码如下:

int operator + (int a,int b)
{
          return (a+b);
}

如果有表达式5+8,就调用此函数,将5和8作为调用函数时的形参,函数的返回值为13,这就是通过函数的方法理解运算符。

=====================示例代码1.1==================================

代码如下:

#include
using namespace std;
class Complex
{
 public:
  Complex()
  {
   real=0;
   imag=0;
  }
  Complex(double r,double i)
  {
   real=r;
   imag=i;
  }
  Complex operator + (Complex &c2);//声明运算符的"+"函数
  void display();
 private:
  double real;
  double imag;
};
Complex Complex::operator+(Complex &c2)
{
 Complex c;
 c.real=real+c2.real;
 c.imag=imag+c2.imag;
 return c;
}
void Complex::display()
{
 cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python的三目运算符和not in运算符使用示例
  • c# 空合并运算符“??”的使用详解
  • Java中的位运算符、移位运算详细介绍
  • 位运算符有什么用?
  • C# null 合并运算符??(双问号)使用示例
  • SQLSERVER对索引的利用及非SARG运算符认识
  • 如何能将字符串转换成数学运算符
  • 在g++中new运算符操作失败,返回NULL,遇见过的请进来一下.
  • 对“.”运算符的困惑
  • 运算符<<的问题
  • c#的异或运算符介绍
  • Java用三元运算符判断奇数和偶数的简单实现
  • 问一个很简单的常识!一个运算符???
  • 有关按位运算符>>>的问题。
  • instanceof和typeof运算符的区别详解
  • C#中38个常用运算符的优先级的划分和理解
  • sql语句中AND & OR 运算符用法
  • 详细介绍Python语言中的按位运算符
  • java中的移位运算符心得总结
  • python基础教程之常用运算符




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3