ch04引用和函数的高级用法.ppt_第1页
ch04引用和函数的高级用法.ppt_第2页
ch04引用和函数的高级用法.ppt_第3页
ch04引用和函数的高级用法.ppt_第4页
ch04引用和函数的高级用法.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、引用和函数的高级用法,学习目标,引用 重载函数 默认参数函数,引用,类型 声明时必须初始化,并从一而终 引用不是变量, 不分配内存空间,引用 vs 指针,语法比较,Val,int swap1(int*,int*); swap1(,#include using namespace std; int main() int x =3; int,char a4 = C+; char ,下列定义中哪些是无效的,怎样改正? float ival = 1.01; float ,float int main() add(10,20);/10+20 add(10); /10+6 add(); /5+6 ,带默认

2、形参值的函数,13,默认形参值的说明次序,默认形参值必须从右向左顺序声明,并且在默认形参值的右面不能有非默认形参值的参数。因为调用时实参取代形参是从左向右的顺序。 例: int add(int x,int y=5,int z=6);/正确 int add(int x=1,int y=5,int z);/错误 int add(int x=1,int y,int z=6);/错误,带默认形参值的函数,14,默认形参值的作用域,在相同的作用域内,默认形参值的说明应保持惟一,但如果在不同的作用域内,允许说明不同的默认形参。 例: int add(int x=1,int y=2); int main()

3、 int add(int x=3,int y=4); add();/使用局部默认形参值(实现3+4) void fun() . add();/使用全局默认形参值(实现1+2) ,带默认形参值的函数,重载函数,可以定义函数名相同,但参数列表不同的多个函数,调用时根据参数列表选择适当的函数. print_int(int a), print_char(char c), print_float(float g), print_string(string s) 可以定义成: print(int a); print(char c); print(float f); print(string s); 编译器

4、会根据调用情况选择适当的函数.,16,重载函数的声明,C+允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,便于记忆。 例:,函 数 重 载,更多例子: int max(int a, int b); int i5; int max(int x, int size); char c5; char max(char x); double max(double a, double b); string max(string s1, string s2);,重载函数,18,注意事项,不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。这样不好:,函 数 重 载,

5、重载函数的形参必须不同:个数不同或类型不同。 编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。,19,例重载函数应用举例,编写三个名为add的重载函数,分别实现两整数相加、两实数相加和两个复数相加的功能。 #include using namespace std; struct complex double real; double imaginary; ;,函 数 重 载,int main() int m, n; double x, y; complex c1, c2, c3; int add(int m, int n); double add(double x, dou

6、ble y); complex add(complex c1, complex c2); coutmn; coutinteger m+n=add(m,n)endl;,20,coutxy; coutc1.realc1.imaginary; coutc2.realc2.imaginary; c3=add(c1,c2); coutcomplex number (c1.real, c1.imaginary )+(c2.real, c2.imaginary)=(c3.real, c3.imaginary)n; ,21,int add(int m, int n) return m+n; double ad

7、d(double x, double y) return x+y; complex add(complex c1, complex c2) complex c; c.real=c1.real+c2.real; c.imaginary=c1.imaginary+c2.imaginary; return c; ,22,运行结果: Enter two integer: 3 5 integer 3+5=8 Enter two real number: 2.3 5.8 real number 2.3+5.8= 8.1 Enter the first complex number: 12.3 45.6 E

8、nter the second complex number: 56.7 67.8 complex number (12.3,45.6)+(56.7,67.8)= (69,113.4),23,重载函数匹配原则,选择适当函数的工作在编译时期进行, 会根据函数的参数列表生成内部函数名,用以区分调用的函数, 如 print(char c) - print_char(char c). 只根据函数的参数列表匹配,即重载函数之间的参数类型或个数必须不同,否则无法区分. 编译器无法根据返回值类型区分重载函数,如 int f(); void f(); /会认为同int f()冲突 重载函数的匹配过程中如果找不到能完美的

温馨提示

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

评论

0/150

提交评论