函数与运算符的重载

上传人:宝路 文档编号:47591622 上传时间:2018-07-03 格式:PPT 页数:48 大小:337.11KB
返回 下载 相关 举报
函数与运算符的重载_第1页
第1页 / 共48页
函数与运算符的重载_第2页
第2页 / 共48页
函数与运算符的重载_第3页
第3页 / 共48页
函数与运算符的重载_第4页
第4页 / 共48页
函数与运算符的重载_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《函数与运算符的重载》由会员分享,可在线阅读,更多相关《函数与运算符的重载(48页珍藏版)》请在金锄头文库上搜索。

1、 如何上大学 ?Date1Date2高 等 教 育 出 版 社 2004年第2版高级语言C+程序设计第 5 章 函数与运算符的重载 *3函数的定义和调用方法; - 5.2函数调用时的参数传递方法; 函数的嵌套与递归 - 5.3 函数与运算符的重载 - 5.4 函数与C+程序结构 - 5.5 函数的重载和默认参数值;4. 库函数的正确使用;本章重点 Date4一. 函数的概念 1. 函数是一个完成特定功能的程序段,除主函数不能被其它函数调用外,其它 函数可以通过函数调用语句以及参数的传递实现调用、以完成既定功能。 2. 函数的分类: (1) 主函数(main)和辅函数 (2) 标准函数(系统函数

2、)和用户定义函数 (3) 无参函数和有参函数无参函数 - 函数名( ) 有参函数 - 函数名( 形式参数表 ) 二. 函数的定义定义格式:存储类型符 数据类型符 函数名(形式参数表) - 函数头数据定义语句序列;执行语句序列; 函数体 return ( 表达式 ) ; 存储类型: extern - 外部函数 (省略时的默认类型)static - 内部函数 (只能在本编译文件内使用) 数据类型:函数返回值的类型 ( 无返回值为 void 类型)5.1.1 函数值和return语句 Date5三. 函数值和return语句 (1) 函数值 - 被调函数执行后所返回的值.无返回值时,则定义为 voi

3、d(空)函数. (2) return语句 - 返回函数值的语句。格式: return 表达式; 形式参数表格式: (数据类型 形式参数1 ,数据类型 形式参数2,. . . )【例6-1】调用函数比较2个数的大小并返回大数。 #include int max(int m1, int m2) using namespace std; int max(int, int); int x; int main() if(m1m2) x=m1; else x=m2; int a,b,x; return x; a=2,b=3; x=max(a, b); cout 被调函数的声明格式: 数据类型符 被调函数名

4、(形式参数表); 3. 调用方式(1) 函数调用语句 【例6-2】函数调用语句 p.104 #include using namespace std; void room1(); void room2(); void main() 5.1.2 函数调用形式Date7cout double max(double m1, double m2) using namespace std; double max(int, int); if(m1m2) return m1; void main() else return m2; double a=2.5 , b=3.39, c=13.25; cout u

5、sing namespace std; void room1(); void room2(); void main() cout (带路径的头文件名格式: 盘符:文件夹名.头文件名)例: d:vc6includestdio.h 常用的头文件: #include / 用于数学函数 #include / 用于字符串函数 #include / 用于格式输出 2. 宏定义语句 格式:#define 宏名 代换正文例: #define MAX(a,b) (a)(b)? (a) : (b)【试题例】 #define R a+b#define PI3.1415若: int a=2, b=3;area = P

6、I * R*R ;cout using namespace std; #defineDEBUG void main( ) int i=555;/ 程序#if defined ( DEBUG )coutz) ch=a;(3) 条件编译方法#define JIAMI #if defined JIAMIif (ch=a cout using namespace std; #include #define JIAMI void main() char ch= ; while(ch!=3) ch=getch();cout=a cout using namespace std; inline int is

7、number( char c ) return ( c=0 if(isnumber(c)cout using namespace std; double max(double, double);/ 2个实型参数的函数原型 int max(int, int);/ 2个整型参数的函数原型 char max(char, char);/ 2个字符型参数的函数原型 int max(int, int, int); / 3个实型参数的函数原型 void main() coutm2)? m1 : m2; int max(int m1, int m2)/ 2个整型参数的函数原型 return (m1m2)? m

8、1 : m2; char max(char m1, char m2) / 2个字符型参数的函数原型 return (m1m2)? m1 : m2; int max(int m1, int m2, int m3) / 3个实型参数的函数原型 int t=max(m1,m2); return max(t, m3); 运行结果: 17.54 56 wmax(5,9,4 )=9 max(5,4,9)=9 二. 函数的默认参数值- 函数的形式参数具有默认值.1. 默认值指定方法(1) 声明函数原型或定义函数时必须在参数表中指定默认值;(2) 具有默认值的参数应当位于形参表的最右端;(3) 使用默认参数,

9、不能对少于参数个数的函数进行重载。Date192. 默认参数的使用- 如果提供实际参数值,则使用实际参数值,否则函数采用默 认参数值。【例6-6】 #include using namespace std; int add(int m1=0, int m2=0, int m3=0, int m4=0) return m1+m2+m3+m4 ; void main( ) cout using namespace std; #include /数学函数必须包含 math.h头文件 void main( ) float x,y,z;cin xy;z = fabs(x-y);cout using na

10、mespace std; #include void main( ) float x; x = sin(30.0); cout using namespace std; #include void main( )/ 求 x/y 的余数 double x,y,z; /float z;/ 函数原型是: double fmod(double , double) x=10.5; y=3; z = fmod(x, y);cout using namespace std; #include“CH6Li11.cpp“ void main( ) int m; cin m; cout using namespa

11、ce std; void main( ) int i,j,k,c;for(i=1; i= k !if(c*c = k)coutusing namespace std;class complex /复数类声明public:/外部接口complex(double r=0.0,double i=0.0)real=r;imag=i; /构造函数complex operator + (complex c2); /+重载为成员函数complex operator - (complex c2); /-重载为成员函数void display();/输出复数private:/私有数据成员double real;

12、/复数实部double imag;/复数虚部;Date36complex complex : operator +(complex c2) /重载函数实现complex c;c.real=c2.real+real;c.imag=c2.imag+imag;return complex(c.real,c.imag);complex complex : operator -(complex c2) /重载函数实现complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return complex(c.real,c.imag);Date37void comp

13、lex:display() cout“(“real“,“imag“)“endl; void main() /主函数complex c1(5,4),c2(2,10),c3; /声明复数类的对象cout“c1=“; c1.display();cout“c2=“; c2.display();c3=c1-c2; /使用重载运算符完成复数减法cout“c3=c1-c2=“;c3.display();c3=c1+c2;/使用重载运算符完成复数加法cout“c3=c1+c2=“;c3.display();Date38程序输出的结果为:c1=(5,4) c2=(2,10) c3=c1-c2=(3,-6) c3=c1+c2=(7,14).Date39.Date40.Date41.Date42.Date43.Date44.Date45.Date46Date47如何上大学 ?Date48

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号