• 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++运算符重载实例,c++不能重载的运算符等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。

运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。例如,大 家都已习惯于用加法运算符”+”对整数、单精度数和双精度数进行加法运算,如5+8, 5.8 +3.67等,其实计算机对整数、单精度数和双精度数的加法操作过程是很不相同的, 但由于C++已经对运算符”+”进行了重载,所以就能适用于int, float, doUble类型的运算。

又如”<<“是C++的位运算中的位移运算符(左移),但在输出操作中又是与流对 象cout 配合使用的流插入运算符,”>>“也是位移运算符(右移),但在输入操作中又是与流对象 cin 配合使用的流提取运算符。这就是运算符重载(operator overloading)。C++系统对”<<“和”>>“进行了重载,用户在不同的场合下使用它们时,作用是不同 的。对”<<“和”>>“的重载处理是放在头文件stream中的。因此,如果要在程序中用”<<“和”>>”作流插入运算符和流提取运算符,必须在本文件模块中包含头文件stream(当然还应当包括”using namespace std“)。

现在要讨论的问题是:用户能否根据自己的需要对C++已提供的运算符进行重载,赋予它们新的含义,使之一名多用。譬如,能否用”+”号进行两个复数的相加。在C++中不能在程序中直接用运算符”+”对复数进行相加运算。用户必须自己设法实现复数相加。例如用户可以通过定义一个专门的函数来实现复数相加。

[例] 通过函数来实现复数相加。

#include <iostream>
using namespace std;
class Complex //定义Complex类
{
public:
  Complex( ){real=0;imag=0;}  //定义构造函数
  Complex(double r,double i){real=r;imag=i;} //构造函数重载
  Complex complex_add(Complex &c2); //声明复数相加函数
  void display( ); //声明输出函数
private:
  double real; //实部
  double imag; //虚部
};
Complex Complex::complex_add(Complex &c2)
{
  Complex c;
  c.real=real+c2.real;
  c.imag=imag+c2.imag;
  return c;
}
void Complex::display( ) //定义输出函数
{
  cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main( )
{
  Complex c1(3,4),c2(5,-10),c3;//定义3个复数对象
  c3=c1.complex_add(c2); //调用复数相加函数
  cout<<"c1="; c1.display( );//输出c1的值
  cout<<"c2="; c2.display( );//输出c2的值
  cout<<"c1+c2="; c3.display( );//输出c3的值
  return 0;
}
</div>

运行结果如下:

c1=(3+4i)
c2=(5-10i)
c1+c2=(8,-6i)
</div>

结果无疑是正确的,但调用方式不直观、太烦琐,使人感到很不方便。能否也和整数的加法运算一样,直接用加号”+”来实现复数运算呢?如

  c3=c1+c2;
</div>


编译系统就会自动完成c1和c2两个复数相加的运算。如果能做到,就为对象的运算提供了很大的方便。这就需要对运算符”+“进行重载。

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

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

  • C++ 中重载和运算符重载加号实现矩阵相加实例代码
  • 基于C++中覆盖,重载,隐藏的一点重要说明
  • 深入解析C++编程中的运算符重载
  • 详解C++编程中的单目运算符重载与双目运算符重载
  • C++运算符重载规则详解
  • 简介C++编程中的运算符重载
  • C++中的重载、覆盖、隐藏介绍
  • c++ *运算符重载
  • c++运算符重载基础知识详解
  • C++运算符重载的方法详细解析

相关文章

  • 2017-05-28C++ 在堆上开辟与释放二维、三维指针详细解析
  • 2017-05-28C++类中的static和const用法实例教程
  • 2017-05-28C++破坏MBR的代码
  • 2017-05-28深入线性时间复杂度求数组中第K大数的方法详解
  • 2017-05-28C++时间戳转换成日期时间的步骤和示例代码
  • 2017-05-28C++ 将数据转为字符串的几种方法
  • 2017-05-28对比C语言中execv相关的执行文件的三个函数
  • 2017-05-28c++ 成员函数与非成员函数的抉择
  • 2017-05-28short与int转换的小例子
  • 2017-05-28c++中vector&lt;int&gt;和vector&lt;int*&gt;的用法区别

文章分类

  • 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# interface与delegate效能比较的深入解析
    • jquery ready函数深入分析
    • C语言进制转换代码分享
    • 支持C++,python,java等语言的跨平台的农历库(天文历算法)
    • C语言 动态内存分配的详解及实例
    • 浅谈c++调用python链接的问题及解决方法
    • 贪心算法的C语言实现与运用详解
    • C语言字符串操作总结大全(超详细)
    • C语言中实现KMP算法的实例讲解

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

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