栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】学习日记-函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】学习日记-函数

函数 1.函数的默认参数:

如下,我们可以给函数形参列表的形参赋予初始值,有了这个初始值,我们也可以不用传递实参!而当这个初始值和实参不同时,还以实参为主;

int Add(int a=100, int b=100)
{
	return a + b;
}

int c = Add();

形参列表中前一位被赋予初始值,那么后面每一位都要赋予初始值(即下图中不能a有初始值而b没有)。注意:函数的声明和调用不能同时有默认参数。

//错误!
int Add(int a = 10, int b = 10);
int Add(int a=10, int b=20)
{
	return a + b;
}
2.函数参数的占位:

函数参数的占位可以理解为开辟一块没有名字的形参空间,不过我们还是要为这块空间传递实参或者设定默认参数:

int M(int a, int)
{
	return a;
}

int main()
{
	int num1 = 10, num2 = 5;
	int d = M(num1,num2);
	cout << d << endl;
	return 0;
}
3函数的重载:

函数的重载指的是在同一个程序中可以出现重复的函数名,只需要它们满足下面的条件:

  1. 函数的作用域相同(即在不在某个函数内部或者别处)
  2. 函数的名称相同
  3. 函数的参数不同、顺序不同、个数不同
  4. 函数返回值的差异不能作为重载的条件
  5. 函数参数顺序不同指的是类型顺序不同,不是变量名书顺序不同
void fun(int a)
{
	cout << "fun_int" << endl;
}

void fun(char a )
{
	cout << "fun_char" << endl;
}

//失败,形参顺序不同是数据类型顺序不同
//void fun(char a, int b)
//{
//	cout << "fun_char_int" << endl;
//}
//
//void fun(char b, int a)
//{
//	cout << "fun_int_char" << endl;
//}

//失败,返回值不能区分函数
//void fun()
//{
//	cout << "fun_non_ret" << endl;
//}
//
//int fun()
//{
//	cout << "fun_int_ret" << endl;
//}

int main()
{
	fun('a');
	fun(2);
	//fun('a',2);
	return 0;
}

注意事项:
1.引用也可以作为区分函数的条件,并且加了const和不加const的引用可以根据输入的数值是否为变量来调用不同的函数:

void func(const int& a)
{
	cout << "C" << endl;
}

void func(int& a)
{
	cout << "Nc" << endl;
}

int main()
{
	int a = 10;
	func(10);//10为常量,输出C
	func(a);//a为变量,输出Nc
	return 0;
}

2.默认参数也可以在一定情况下作为重载函数的条件:只要默认参数的存在能区分函数就可以

void func(int a, int b = 10)
{
	cout << "T" << endl;
}
void func(int a)
{
	cout << "O" << endl;
}

int main()
{
	func(1,2);//调用第一个,因为只有第一个满足有两个形参,此时默认参数有无意义不同
	//fun(1)错误,因为第一个函数和第二个函数都可以接收一个参数,此时默认参数有无意义一样
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号