C++入门基础教程:函数高级

Posted Zhi Zhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++入门基础教程:函数高级相关的知识,希望对你有一定的参考价值。

目录

前言

一、函数默认参数

二、函数占位参数

三、函数重载

结束语


前言

博主通过对C++基础知识的总结,有望写出深入浅出的C++基础教程专栏,并分享给大家阅读,今后的一段时间我将持续更新C++入门系列博文,想学习C++的朋友可以关注我,希望大家有所收获。

一、函数默认参数

语法:返回值类型 函数名 (参数=默认值) { }

如果自己传入参数,就用自己的数据,如果没有,则用默认值。

int func(int a, int b = 20, int c = 30)
{
	return a + b + c;
}

int main()
{
	cout << func(10) << endl;  // b、c有默认值
	system("pause");
	return 0;
}

注意事项:

(1)如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值;

(2)如果函数声明有默认参数,函数实现就不能有默认参数,声明和实现只能是其中一个有默认参数。

二、函数占位参数

语法:返回值类型 函数名 (数据类型) { }

void func(int a, int)
{
	cout << "this is func" << endl;
}

// 函数调用中的第二个实参必须传入一个整型数据
func(10,20);

三、函数重载

作用:函数名可以相同,提高复用性。

条件:

(1)同一个作用域下;

(2)函数名相同;

(3)函数参数类型不同或者个数不同或者顺序不同。

// 同一个作用域下,函数名相同
void func()
{
	cout << "func的调用" << endl;
}
void func(int a)
{
	cout << "func(int a)的调用" << endl;
}
void func(double a)
{
	cout << "func(double a)的调用" << endl;
}
void func(int a,double b)
{
	cout << "func(int a,double b)的调用" << endl;
}
void func(double a, int b)
{
	cout << "func(double a, int b)的调用" << endl;
}
// 函数的返回值不可以作为函数重载的条件
int func(double a, int b)  // 错误
{
	cout << "func(double a, int b)的调用" << endl;
}

注意事项:

(1)引用作为重载的条件;

// 引用作为重载的条件
void func(int &a)
{
	cout << "func(int &a)的调用" << endl;
}
void func(const int &a)
{
	cout << "func(const int &a)的调用" << endl;
}

int a = 10;
func(a);    // func(int &a)的调用
func(10);   // func(const int &a)的调用

(2)函数重载碰到默认参数,出现二义性,编译器会报错。

// 函数重载碰到默认参数
void func2(int a, int b = 10)
{
	cout << "func(int a, int b = 10)的调用" << endl;
}
void func2(int a)
{
	cout << "func(int a)的调用" << endl;
}

func2(10);   // 出现二义性,编译器会报错

结束语

大家的点赞和关注是博主最大的动力,博主所有博文中的代码文件都可分享给您(除了少量付费资源),如果您想要获取博文中的完整代码文件,可通过C币或积分下载,没有C币或积分的朋友可在关注、点赞和评论博文后,私信发送您的邮箱,我会在第一时间发送给您。博主后面会有更多的分享,敬请关注哦!

 

以上是关于C++入门基础教程:函数高级的主要内容,如果未能解决你的问题,请参考以下文章

C++入门基础教程:const限定符 与 “引用”

C++入门基础教程:模板(上)

C++入门基础教程:模板(上)

C++入门基础教程:C语言的指针与结构体到底怎么用?

C++入门基础教程:C语言的指针与结构体到底怎么用?

C++入门基础教程:类和对象(下)