c++之运算符重载(1)

c++之运算符重载(1)

ID:6322099

大小:102.00 KB

页数:12页

时间:2018-01-10

c++之运算符重载(1)_第1页
c++之运算符重载(1)_第2页
c++之运算符重载(1)_第3页
c++之运算符重载(1)_第4页
c++之运算符重载(1)_第5页
资源描述:

《c++之运算符重载(1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、转自:http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/12/2136598.html        在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的。这一系列我将主要讲解C++中有关运算符重载方面的内容。在每一个系列讲解之前,都会有它的一些基础知识需要我们去理解。而运算符重载的基础就是运算符重载函数。所以今天主要讲的是运算符重载函数。  1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不同行为的发生。比如1inti

2、;2inti1=10,i2=10;3i=i1+i2;4std::cout<<"i1+i2="<

3、提供的预定义的基本数据类型毕竟是有限的,在解决一些实际的问题时,往往需要用户自定义数据类型。比如高中数学里所提到的复数:1classComplex//复数类2{3public:4doublereal;//实数5doubleimag;//虚数6Complex(doublereal=0,doubleimag=0)7{8this->real=real;9this->imag=imag;10}11}假如我们建立两个复数,并用"+"运算符让它们直接相加:1Complexcom1(10,10),com2(20,20),sum;2sum=com1+com2;那么会提示没有与这些

4、操作数匹配的"+"运算符的错误。这是因为Complex类类型不是预定义类型,系统没用对该类型的数据进行加法运算符函数的重载。C++就为运算符重载提供了一种方法,即运算符重载函数。其函数名字规定为operator后紧跟重载运算符。比如:operator+(),operator*()等。现在我们给上述程序声明一个加法运算符的重载函数用于完成复数的加法运算:ViewCode1#include"stdafx.h"2#include34classComplex//复数类5{6public:7doublereal;//实数8doubleimag;//虚数9

5、Complex(doublereal=0,doubleimag=0)10{11this->real=real;12this->imag=imag;13}14};1516Complexoperator+(Complexcom1,Complexcom2)//运算符重载函数17{18returnComplex(com1.real+com2.real,com1.imag+com2.imag);19}2021intmain()22{23Complexcom1(10,10),com2(20,20),sum;24sum=com1+com2;//或sum=operator+(co

6、m1,com2)2526std::cout<<"sum的实数部分为"<

7、的数据成员是公有的性质,所以运算符重载函数可以访问。但如果定义为私有的呢,那该怎么办。其实,在实际的运算符重载函数声明当中,要不定义其为要操作类的成员函数或类的友元函数。  (1)运算符重载函数作为类的友元函数的形式:  class类名  {    friend返回类型operator运算符(形参表);  }  类外定义格式:  返回类型operator运算符(参数表)  {    函数体  }友元函数重载双目运算符(有两个操作数,通常在运算符的左右两则),参数表中的个数为两个。若是重载单目运算符(只有一个操作数),则参数表中只有一参数。i.友元函数重载双目运算符

8、(+):V

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。