高级函数特性

高级函数特性

ID:41591712

大小:301.50 KB

页数:24页

时间:2019-08-28

高级函数特性_第1页
高级函数特性_第2页
高级函数特性_第3页
高级函数特性_第4页
高级函数特性_第5页
资源描述:

《高级函数特性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、高级函数特性第二章回顾传统编程的缺点对象类抽象继承封装多态性2目标引用默认参数内联函数函数重载3按值传递函数调用中复制参数的值函数只能访问自己创建的副本对副本进行的更改不会影响原始变量25100#254按引用传递函数调用中传递参数的引用主要优点函数可以访问主调程序中的实际变量提供一种将多个值从被调函数返回到主调程序的机制25100#1005向函数传递引用2-1引用提供对象的别名或可选名“&”告诉编译器将变量当作引用voidswap(int& i, int& j){inttmp= i;i = j;j =tmp;}voidm

2、ain(){int x, y;swap(x,y);}6向函数传递引用2-2引用就是对象本身不要认为引用是指向对象的指针引用是该对象的副本大的数据结构按引用传递,效率非常高7返回引用返回引用不是返回变量的副本函数头中包含一个“&”int&fn(int&num){return(num);}voidmain(){intn1,n2;n1=fn(n2);}8常量引用用于不希望修改对象,以及要把大对象当作输入参数的情况高效性和安全性doubledistance(constpoint&p1,constpoint&p2);将引用声明为常

3、量,不能再绑定别的对象intconst&ri=num1;9函数函数声明函数名函数返回值的类型函数的参数个数和类型函数声明可以不包含参数名调用函数时可以不指定全部参数10函数的默认参数为可以不指定的参数提供默认值voidfunc(int=1,int=3,char='*');或voidfunc(intnum1,intnum2=3,charch='*');11参数的默认值2-1一旦给一个参数赋了默认值,后续所有参数也都必须有默认值voiderrfunc(intnum1=2,intnum2,charch='+');//错误默认值

4、的类型必须正确默认值可以在原型或者函数定义中给出,但不能在两个位置同时给出建议在原型声明中指定默认值12参数的默认值2-2调用上面声明的函数func()func(2,13,'+');func(1);//第二个和第三个参数采用默认值func(2,25);//第三个参数采用默认值func();//所有这三个参数都采用默认值func(2,,‘+’);//错误!如果遗漏了中间的参数,编译器将报错13默认参数的优点如果要使用的参数在函数中几乎总是采用相同的值,则默认参数非常方便通过添加参数来增加函数的功能时,默认参数也非常有用14

5、内联函数2-1通常的函数调用会节省内存空间,但是会花费一些额外的时间内联函数节省短函数的执行时间inlinefloatconverter(floatdollars);15内联函数2-2非常短的函数适合于内联函数体会插入到发生函数调用的地方fn1()fn1()fn1()fn1()fn1();语句;fn1();mfunc();fn1();funcy();main()main()重复地 放到函数中的代码放在内联函数中的代码16注意事项编译器必须先看到函数定义,而不是声明编译器有可能会忽略inline关键字不允许为不同的源文件中

6、的内联函数指定不同的实现17函数重载2-1具有相同的名称,执行基本相同的操作,但是使用不同的参数列表函数多态性voiddisplay();voiddisplay(constchar*);voiddisplay(intone,inttwo);voiddisplay(floatnumber);18函数重载2-2编译器通过调用时参数的个数和类型确定调用重载函数的哪个定义只有对不同的数据集完成基本相同任务的函数才应重载19函数重载的优点不必使用不同的函数名有助于理解和调试代码易于维护代码20数据类型不同的重载参数的类型不同,编译

7、器就能够区分intsquare(int);floatsquare(float);doublesquare(double);同一函数名输出任何数据就是重载了输出函数21参数个数不同的重载intsquare(int);//函数声明intsquare(int,int,int);intasq=square(a)//函数调用intbsq=square(x,y,z)编译器会调用参数匹配的函数与函数的声明顺序无关不会考虑返回类型22函数重载的作用域规则重载机制只有在函数声明的作用域内才有效classfirst{public:voidd

8、isplay();};classsecond{public:voiddisplay();};voidmain(){firstobject1;secondobject2;//没有发生函数重载object1.display()object2.display();}23总结引用默认参数内联函数函数重载24

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

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

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