当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《C++程序设计教程》教学资源(PPT课件讲稿)第10讲 运算符重载

资源类别:文库,文档格式:PPT,文档页数:23,文件大小:122.5KB,团购合买
一、如何理解运算符的重载? 1运算符本身是一种函数。加法是一种运算如:c=a+b赋值也是一种运算函数形式:
点击下载完整版文档(PPT)

C++程序设计教程 第10讲:运算符重载

C++程序设计教程 第10讲: 运算符重载/5

§8.2运算符重载 如何理解运算符的重载? 1。运算符本身是一种函数 加法是一种运算 如 a+ b 赋值也是一种运算 函数形式 int add(int aint b)[ return (a+b);) 调用方式:c=add(a,b); 再如 int a, b, zi 如果add(inta,intb) a t b t ci 没有返回值,则不能实现连 如用函数表示应该是: add(add(a,b)c)i

§8.2 运算符重载  如何理解运算符的重载? 1。运算符本身是一种函数。 如: c = a + b; 函数形式: int add(int a,int b) { return (a+b); } 调用方式: c = add(a,b); 加法是一种运算 赋值也是一种运算 再如: int a, b, c, z; z = a + b + c; 如用函数表示应该是: z = add(add(a,b),c); 如果 add(int a,int b) 没有返回值,则不能实现连 加!!

§8.2运算符重载 从函数角度来看,“重载”是函数名称相同而入口参数数 据类型不同的。 因此,cout<<a<<b;中的<运算符 和int=a<<2;中的<的运算符 同样的运算符但调用对象不同,就可称为重载。 对加法而言 int ia =1 ib =2: o int ic ia t ib; o float fa =1. 5f f =2. 5f: 。f1 oat fo=fa+fb; 这两者中的+如果看作函数的话,就是被重载了

§8.2 运算符重载 2。从函数角度来看,“重载”是函数名称相同而入口参数数 据类型不同的。 因此,cout << a << b; 中的 << 运算符 和 int c = a << 2; 中的 << 的运算符 同样的运算符但调用对象不同,就可称为重载。 对加法而言:  int ia = 1, ib = 2;  int ic = ia + ib;  float fa = 1.5f, fb = 2.5f;  float fc = fa + fb;  这两者中的 + 如果看作函数的话,就是被重载了

8.2.1运算符重载的规则 C++允许重载现有的大多数运算符,而且只重 载已经有的运算符; 运算符的重载是通过编写函数来实现的,重载 之后的运算符的优先级和结合性都不会改变; 运算符重载是针对新的数据类型(类),对运 算符进行定义。除了=和&,对象的运算符 必须重载,=和&也可重载; [注意] 合理使用运算符的重载,使调用者容易理解 赋值运算符(=)只是逐个拷贝类的数据成员, 这在很多情况下很危险

8.2.1 运算符重载的规则 1. C++允许重载现有的大多数运算符,而且只重 载已经有的运算符; 2. 运算符的重载是通过编写函数来实现的,重载 之后的运算符的优先级和结合性都不会改变; 3. 运算符重载是针对新的数据类型(类),对运 算符进行定义。除了 = 和 &,对象的运算符 必须重载,= 和 & 也可重载;  [注意] 1. 合理使用运算符的重载,使调用者容易理解; 2. 赋值运算符( = ) 只是逐个拷贝类的数据成员, 这在很多情况下很危险

运算符重载例8-1 class comp1ex//复数类声明 I public //构造函数 complex(double r=0.0, double i=0.0) real=r; imag=ii y void display()//显示复数的值 I cout < ("< real <<m<< imag <<)"<<endl private: double reali double imag

运算符重载 例8-1 class complex //复数类声明 { public: //构造函数 complex(double r=0.0,double i=0.0) { real=r; imag=i; } void display() //显示复数的值 { cout << “(” << real << “,” << imag << “)” << endl; } private: double real; double imag; };

例8-1:加运算符+ class comp1ex//复数类声明 public: /构造函数 complex(double r=0.o, double i=0.0) real=ri imag=ii 1 complex operator t (complex c2)i //+重载为成员函数 void display o)i private: double reali double imagi

例8-1:加运算符 + class complex //复数类声明 { public: //构造函数 complex(double r=0.0,double i=0.0) { real=r; imag=i; } complex operator + (complex c2); //+重载为成员函数 void display(); private: double real; double imag; };

例8-1:运算符+ complexcomplex:: operator (+(complex c2) /重载运算符+的实现 I complex ci 对运算符+进行重载 c. real c2 real real c imag c2 imag t imag; return complex(c real,c imag)i int main o //主函数 调用重载函数+ complex cl(5, 4) c3=c1+c2; //使用重载运算符完成复数加法 cout<<"c3=c1+c2="; c3display o

例8-1:运算符 + complex complex::operator + (complex c2) //重载运算符 + 的实现 { complex c; c.real = c2.real + real; c.imag = c2.imag + imag; return complex(c.real,c.imag); } 对运算符+进行重载 int main() //主函数 { complex c1(5,4),c2(2,10),c3; c3 = c1 + c2; //使用重载运算符完成复数加法 cout << "c3=c1+c2="; c3.display(); } 调用重载函数 +

可以被重载的运算符(双目 算术运算 +(加),-(减),*(乘),/(除),%(取余) 位运算 >(右移),丨(或),&(与),(异或) 赋值运算 (赋值)+=、 /= 关系和逻辑运算 ==(相等),!=(不相等),>(大于),=(大于等于) (小于等于) (逻辑或),&&(逻辑与) 分量运算->(数据成员),->*(指针型函数成员 其他运算,(关联语句)>(输入流)

可以被重载的运算符(双目)  算术运算  +(加),-(减),*(乘),/(除),%(取余)  位运算  >(右移),|(或),&(与),^(异或)  赋值运算  =(赋值)+=、-=、 /=、*=、|=、&=、 ^=  关系和逻辑运算  ==(相等),!=(不相等),>(大于),= (大于等于),(数据成员),->*(指针型函数成员)  其他运算 ,(关联语句) >(输入流)

可以被重载的运算符(单目) 自增减及符号运算 ++(自加),-(自减),+(正号),-(负 号) 逻辑运算 !(逻辑非)、~(补) 赋值运算 &(取地址)、☆(按指针取值) 其他运算 ()(类型转换)、[](数组下标)、new(创 建)、 delete(删除)

可以被重载的运算符(单目) 自增减及符号运算  ++(自加),--(自减),+(正号),-(负 号) 逻辑运算  !(逻辑非)、~(补) 赋值运算  &(取地址)、*(按指针取值) 其他运算  () (类型转换)、[](数组下标)、new (创 建)、delete (删除)

不能被重载的运算符 分量运算 (取成员),*(取指针型函数成员) 作用域运算 :(单目全局),:(双目局部) 目运算 ?:(条件运算) 秦取大小运算 sizeof(取大小)

不能被重载的运算符 分量运算  .(取成员),.*(取指针型函数成员) 作用域运算  ::(单目全局),:: (双目局部) 三目运算  ? :(条件运算) 取大小运算  sizeof (取大小)

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共23页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有