网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文
当前位置:书香门第 > 计算机 > C语言

C/C++函数重载与缺省参数

栏目: C语言 / 发布于: / 人气:9.91K

C语言是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。下面是小编分享的C/C++函数重载与缺省参数,一起来看一下吧。

C/C++函数重载与缺省参数

函数重载

函数多态是C++在C语言的基础上新增的功能,默认参数让你能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让你能够使用多个同名的函数。“多态”指的是有多种形式因此函数多态允许函数可以有多种形式,类似的术语“函数重载”指的是可以有多个同名的函数,因此对名称进行了重载,它们两个看起来是同一回事,但我们会通常使用函数重载,可以通过函数重载来设计一系列的函数,它们完成相同的工作,但使用不同的参数列表

重载函数就像是有多钟含义的动词。函数重载的关键是函数的参数列表(也称为函数特征标【function 、signature】)。如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同,而变量名是无关紧要的。C++允许定义名称相同的函数,条件是它们的特征标不同,如果参数数目和/或参数类型不同,则特征标也不同。

我们从代码里面看下:

////C C++

////c语言:面向过程的语言,严格的先后顺序,便于理解

////c++语言:面向对象的语言,先后顺序没有那么严格

//

////C++是C的升级

////C++比C语言多了两个关键的'知识,1、类和对象;2、模板

//

////函数重载

////对于相同(相似)的函数行为,用一个函数名进行管理

////一个函数名管理多个函数体

////构成函数重载的条件:函数名必须一致,参数列表不一致

////参数列表不一致:1、参数列表的个数不一致;2、参数对应位置的类型不一致

//

//struct MyPoint

//{

// int row, col;

//};

//

////int MyDev(int a, int b)

////{

//// return a / b;

////}

////

////char MyDev(int c, int d)

////{

//// return c / d;

////}

//

//int MyMul(int a, char c)

//{

// return a * c;

//}

//

//int MyMul(char c, int a)

//{

// return a * c;

//}

//

//int myAdd(int a, int b, int c)

//{

// return a + b + c;

//}

//

//int myAdd(int a, int b)

//{

// return a + b;

//}

//

//double myAdd(double a, double b)

//{

// return a + b;

//}

//

//MyPoint myAdd(MyPoint a, MyPoint b)

//{

// MyPoint tempPos;

// = + ;

// = + ;

// return tempPos;

//}

//

//void main()

//{

// printf("%f",myAdd(1.3,2.89));

// printf("%d", myAdd(1, 2));

//

//}

//函数的缺省参数

//在函数定义的时候,给形参给出初始值。

//当函数调用时,就可以不用再给实参,默认使用初始值

//函数调用给出实参,会用实参去替换掉默认的初始值

//缺省参数只能由后往前缺省

//缺省参数和函数重载组合会产生二义性

//缺省参数声明和定义分开

int myMul(int a = 1, int b = 4);

//int MyAdd(int a, int b)

//{

// return a + b;

//}

//

//int MyAdd(int a, int b, int c = 1)

//{

// return a + b + c;

//}

void mySwap(int a, int b)

{

int c = a;

a = b;

b = c;

}

void main()

{

int num1 = 10;

int num2 = 20;//两个变量是通过一段流程语句来的

//printf("%d", MyAdd(num1, num2));

//printf("%d", MyAdd());

mySwap(num1, num2);

printf("num1 = %d num2 = %d", num1, num2);

}

int myMul(int a, int b)

{

return a * b;

}