• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++运算符重载的方法详细解析

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++运算符重载,c++赋值运算符重载,c++运算符重载实例,c++不能重载的运算符,运算符重载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

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

{对运算符的重载处理}

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

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

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

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

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

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

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

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

分析:

在main函数中,“c3=c1+c2;”在将运算符+重载为类的成员函数后,C++编译系统将程序中的表达式c1+c2解释为:

c1.operator+(c2);//其中c1+c2是Complex类的对象

即以c2为实参调用c1的运算符重载函数operator+(Complex & c2),进行求值,得到两个复数之和。上面的“operator+”是一个函数名,它是类Complex的成员函数。

在实际工作中,类的声明和类的使用往往是分离的。假如在声明Complex类时,对运算符+,-,*,/都进行了重载,那么使用这个类的用户在编程时可以完全不考虑函数是怎么实现的,

放心大胆地直接使用+,-,*,/进行复数的运算即可,显然十分方便。

对上面的运算符重载函数operator +还可以改写的更简练一些:

在建立临时对象过程中,调用构造函数。return语句将此临时对象作为函数返回值。

那么,我们将+运算符进行了重载以后,可否将一个常量和一个复数相加呢?比如:

应写成对象形式,如:

例如,运算符+被重载以后,仍然可以用于int,float,double,char类型数据的运算,同时又增加了用于复数相加的功能。

编译系统根据表达式的上下文,即根据运算符两侧(如果是单目运算符则为一侧)的数据类型决定的。

如,对于3+5,则执行整数加法;对于3.4+5.45,则执行双精度数加法;对于两个复数类相加,则执行复数加法。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 中重载和运算符重载加号实现矩阵相加实例代码
  • 有关C++中类类型转换操作符总结(必看篇)
  • C++中求余运算符(%)示例详解
  • 基于C++中覆盖,重载,隐藏的一点重要说明
  • C++中运算符 &和&&、|和|| 的详解及区别
  • 深入解析C++编程中的运算符重载
  • 讲解C++编程中Address-of运算符&的作用及用法
  • 深入解析C++编程中范围解析运算符的作用及使用
  • 深入解析C++编程中__alignof 与__uuidof运算符的使用
  • 详解C++编程中的单目运算符重载与双目运算符重载

相关文章

  • 2017-05-28C++设计模式之桥接模式
  • 2017-05-28C语言数据类型转换实例代码
  • 2017-05-28C++中const的用法详细总结
  • 2017-05-28探讨编写int strlen(char *strDest);不允许定义变量的问题
  • 2017-05-28C语言实现逆波兰式实例
  • 2017-05-28C++中Cbitmap,HBitmap,Bitmap区别及联系
  • 2017-05-28VC获取当前路径及程序名的实现代码
  • 2017-05-28C语言实现牛顿迭代法解方程详解
  • 2017-05-28C++不使用变量求字符串长度strlen函数的实现方法
  • 2017-05-28c++基础语法:普通继承

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery ready函数深入分析
    • C++模板特例化应用实例
    • jQuery移动页面开发中主题按钮的设计示例
    • C++设计模式之命令模式
    • C++利用链栈实现表达式求值
    • 详解C++编程中用数组名作函数参数的方法
    • 解析如何利用switch语句进行字符统计
    • C语言中逻辑运算符与条件运算符的学习教程
    • 用c语言根据可变参数合成字符串的实现代码
    • C++学习小结之二进制转换

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有