1 / 22
文档名称:

计算机编程(ppt课件).ppt

格式:ppt   大小:267KB   页数:22页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机编程(ppt课件).ppt

上传人:1017848967 2021/12/14 文件大小:267 KB

下载得到文件列表

计算机编程(ppt课件).ppt

相关文档

文档介绍

文档介绍:信息管理与工程学院 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+,参数类型为Complex类。
operator+称为“加运载符函数”。
当程序执行到sum=com1+com2时,编译器就将此式编译成sum= com1 .operator(com2)。
//
#include <iostream>
using namespace std;
class Complex //复数类声明
{ 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()
{
Complex com1(13, 10), com2(20, 44), sum; //创建三个Complex类对象
//sum= + (com2); //对象com1执行成员函数operator+
sum=com1+ com2;
cout<<"sum的实数部分为"<<<<endl;
cout<<"sum的虚数部分为"<<<<"i"<<endl;
return 0;
}
在main()函数中sum= + (com2)可以改写为sum=com1+com2,当程序执行到sum=com1+com2时,编译器就将此式编译成sum= com1 .operator(com2)。这样就实现了“+”运算符的重载,也就是用“+”实现了复数的相加。
运算符重载的规则
(1)C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型。
(2)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。
(3)C++允许重载的运算符C++中绝大部分的运算符允许重载