下载此文档

运算符重载.ppt


文档分类:IT计算机 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
信息管理与工程学院 2014年9月
计算机编程
第14章运算符重载
引言
运算符重载方法
运算符重载的规则
运算符函数
双目运算符的重载现
单目运算符的重载
重载流插入运算符和流提取运算符
14. 8 不同类型数据间的转换
引言
C++用户希望能在自己创建的新的类型(类)上也能使用这类C++本身已经存在的运算符,
例如:
复数和矩阵这些概念,也希望用熟知的算术运算符: +, *等进行类似的算术运算;
C++中解决类似问题的技术叫做运算符重载。
运算符重载方法
实际上, 在前面的加法例子中, 我们已经不知不觉地使用了重载的运算。在这个程序里"+"既完成两个整形数的加法运算,又完成了双精度型的加法运算。
为什么同一个运算符"+"可以用于完成不同类型的数据的加法运算?这是因为C++针对预定义基本数据类型已经对"+"运算符做了适当的重载。在编译不同类型数据的加法表达式时,会自动调用相应类型的加法运算符重载函数。
实际上我们已经不知不觉地使用了重载的运算。
(例14-1):
//
#include <iostream>
using namespace std;
int main()
{
int i1=10, i2=10, i;
i=i1+i2;
cout<<"i1+i2="<<i<<endl;
double d1=20, d2=20, d;
d=d1+d2;
cout<<"d1+d2="<<d<<endl;
return 0;
}
在这个程序里"+"既完成两个整形数的加法运算,又完成了双精度型的加法运算。为什么同一个运算符"+"可以用于完成不同类型的数据的加法运算?这是因为C++针对预定义基本数据类型已经对"+"运算符做了适当的重载。
复数的加法运算
用c++处理数学里所提到的复数,我们可以声明一个复数类,并定义一个类成员函数:
operator+(Complex t ))
来实现复数的加法运算。
成员函数operator+(Complex t)的函数名称为operator+,plex类。
operator+称为“加运载符函数”。
2时,编译器就将此式编译成sum= com1 .2)。
//
#include <iostream>
using namespace std;
plex //复数类声明
{ public:
double real; //实数
double imag; //虚数
Complex(double a, double b) //构造函数定义
{
this->real=a;
this->imag=b;
}
Complex(){} //默认构造函数定义
Complex operator+(Complex t) //成员函数operator+定义
{
Complex r;
= this->real+;
= this->imag+;
return r;
}
};
int main()
{
1(13, 10), com2(20, 44), sum; //plex类对象
// + (com2); //1执行成员函数operator+
1+ com2;
cout<<"sum的实数部分为"<<<<endl;
cout<<"sum的虚数部分为"<<<<"i"<<endl;
return 0;
}
在main() + (com2)2,2时,编译器就将此式编译成sum= com1 .2)。这样就实现了“+”运算符的重载,也就是用“+”实现了复数的相加。
运算符重载的规则
(1)C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型。
(2)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。
(3)C++允许重载的运算符C++中绝大部分的运算符允许重载。
(4)重载不能改变运算符运算对象(即操作数)的个数。
运算符重载的规则
(5)重载不能改变运算符的优先级别。
(6)重载运算符的函数不能有默认的参数。
(7)重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。
(8)用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“&”不必用户重载。

运算符重载 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息