- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 函数与引用 ;教学目的;2.1 函数概述;问题1:函数是什么?
就是编写完成函数功能的程序块
问题2:函数定义的一般格式?
函数值类型 函数名(形式参数表 )
{ 函数体 };2.2 函数重载; 当某个函数中调用到重载函数时,编译器会根据实参的类型去对应地调用相应的函数。匹配过程如下:
(1)如果有严格匹配的函数,就调用该函数;
(2)参数内部转换后如果匹配,调用该函数;
(3)通过用户定义的转换寻求匹配。;例2-1:
void print(double);
void print(int);
void func(){
print(1);
print(1.0);
print(double);
print(3.1415f);
pirnt(double);
};例2-2 利用参数类型的不同实现重载函数。
#includeiostream
using namespace std;
int Abs(int x)
{ cout调用函数Abs(int).\n;
return x=0 ? x : -x; }
double Abs(double x)
{ cout调用函数Abs(double).\n;
return x=0 ? x : -x;}
void main ()
{ cout-20的绝对值是:Abs(-20)endl; cout-111.11的绝对值是:Abs(-111.11)endl;
};int max(int a,int b);
int max(int a,int b,int c);
int max(int a,int b,int c,int d);
void main ()
{ coutmax(3,5)endl;
coutmax(-7,9,0)endl;
coutmax(23,15,3,6)endl;}
;定义重载函数需要注意以下两点:
1)定义的重载函数必须具有不同的参数个数或不同的参数类型,只有这样编译系统才能根据不同的参数决定调用哪一个函数版本。
2)仅仅是函数返回值不同并不能区分两个函数,因此不能根据函数的返回值定义函数的重载,否则会发生二义性的错误。
例如: int sum(int a)
{…..}
void sum(int a)
{ ……};2.3 内联函数;例2-4用内联函数计算立方体的体积
inline float Cube(float a)
{ return a*a*a; }
#includeiostream
using namespace std;
void main ()
{ cout输入立方体的边长:;
float side;
cinside;
cout边长为side的立方体的体积为:Cube(side)\n; };2.4具有默认参数值的函数;参数默认是通过不同参数来分辨一个函数调用中的行为差异;默认参数规则
函数参数默认值只能从后往前设置,例:
void func(int a=1,int b,int c=3,int d=4);
void func(int a,int b=1,int c=3,int d=4);
调用时的实参按位置解析,默认参数也只能从后往前逐个替换尾部的“缺漏”,例:
func (10,15,20,30);
func (0);
func(12,12);
func(2,15,,20);
注:既有函数声明又有函数定义时,默认参数值只能置身于声明中.;例2-6设计一程序,输入圆柱体的半径和高度,求出圆柱体的体积。
#define PI 3.1415926
float V (float r, float h=10); //A
void main (void)
{ float r, h ;
cout输入第一个圆柱体的半径和高度:;
cinrh;
cout第一个圆柱体的体积为: V (r, h)\n;
cout输入第二个圆柱体的半径:;
cinr;
cout第二个圆柱体的体积为: V (r)\n;
float V (float=5, float=20); //B
cout第三个圆柱体的体积为: V ()\n; }
float V (float r,float h)
{return ( PI*r*r*h ); };2.5 引用 ;消除这种错误的方法的方法之一是在调用函数之前对该函数进行函数的原型说明。
函数原型说明的一般格式为:
《类型》
文档评论(0)