C++高级函数特性_第1页
C++高级函数特性_第2页
C++高级函数特性_第3页
C++高级函数特性_第4页
C++高级函数特性_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、p;j) int tmp=i; i=j; j=tmp;void main() int x=1,y=2; swap(x,y);coutxendlyendl; 上面的程序如果改为指针传递呢?向函数传递引用向函数传递引用 2-2(chanshu.cpp)n引用就是对象本身n不要认为q引用是指向对象的指针q引用是该对象的副本n大的数据结构按引用传递,效率非常高返回引用返回引用(reference.cpp)n返回引用不是返回变量的副本n函数头中包含一个“&”int &fn(int &num) return(num);void main() int n1, n2; n1 = fn(

3、n2);常量引用常量引用n用于不希望修改对象,以及要把大对象当作输入参数的情况n高效性和安全性double distance(const point& p1, const point& p2); n将引用声明为常量,不能再绑定别的对象int const &ri = num1; 函数函数n函数声明q函数名q函数返回值的类型q函数的参数个数和类型n函数声明可以不包含参数名n调用函数时可以不指定全部参数函数的默认参数函数的默认参数n可以为参数提供默认值void func(int = 1, int = 3, char = *);或void func(int num1,int n

4、um2 = 3,char ch = *);参数的默认值参数的默认值 2-1n一旦给一个参数赋了默认值,后续所有参数也都必须有默认值n使用缺省参数要避免混淆 void errfunc(int num1=2,int num2,char ch=+);/错误n默认值的类型必须正确n默认值可以在原型或者函数定义中给出,但不能在两个位置同时给出n建议在原型声明中指定默认值参数的默认值参数的默认值 2-2n调用上面声明的函数 func()func(2,13,+); func(1); /第二个和第三个参数采用默认值func(2,25); /第三个参数采用默认值func(); /所有这三个参数都采用默认值fun

5、c(2,+); /错误!n如果遗漏了中间的参数,编译器将报错默认参数的优点默认参数的优点n如果要使用的参数在函数中几乎总是采用相同的值,则默认参数非常方便n通过添加参数来增加函数的功能时,默认参数也非常有用内联函数内联函数 2-1n通常的函数调用会节省内存空间,但是会花费一些额外的时间n内联函数节省短函数的执行时间 inline float converter(float dollars); 内联函数内联函数 2-2n非常短的函数适合于内联n函数体会插入到发生函数调用的地方fn1()fn1()fn1()fn1()fn1();语句;fn1();mfunc();fn1();funcy();main

6、()main()重复地放到函数中的代码放在内联函数中的代码函数重载函数重载 定义(定义(chongzai.cpp)n具有相同的名称,执行基本相同的操作,但是使用不同的参数列表Cout1;Cout“hello”;Coutname;函数重载函数重载 如何使用如何使用n编译器通过调用时参数的个数和类型确定调用重载函数的哪个定义n只有对不同的数据集完成基本相同任务的函数才应重载函数重载的优点函数重载的优点n不必使用不同的函数名n有助于理解和调试代码n易于维护代码数据类型不同的重载数据类型不同的重载n参数的类型不同,编译器就能够区分 int square(int);float square(float);double square(double);参数个数不同的重载参数个数不同的重载int square(int);/函数声明int square(int,int,int);int asq = square(a)/函数调用int bsq = square(x,y,z)n编译器会调用参数匹配的函数n与函数的声明顺序无关n不会考虑返回类型函数重载的作用域规则函数重载的作用域规则n重载机制只有在函数声明的作用域内才有效 class firstpublic: void display();class secondpublic: void display();void main(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论