C++缺省参数和函数重载

缺省参数

1.什么是缺省参数

c++允许在函数声明或定义的时候给参数指定默认值,这样就可以做到在调用该函数时如果传参数,形参的值就是实参的值;如果不传参数那么形参的值就是指定的默认值。
缺省参数分为全缺省和半缺省

全缺省

//所有形参都指定了一个值
int Add(int x = 1, int y = 2, int z = 3)
{
    
    
	return x + y + z;
}

int main()
{
    
    

	printf("%d\n", Add());


	return 0;
}

在这里插入图片描述

半缺省

int Add(int x , int y = 2, int z = 3)
{
    
    
	return x + y + z;
}

int main()
{
    
    

	printf("x + y + z = %d\n", Add(1));

	system("pause");
	return 0;
}

int Add(int x , int y, int z = 3)
{
    
    
	return x + y + z;
}

int main()
{
    
    

	printf("x + y + z = %d\n", Add(1,2));

	system("pause");
	return 0;
}

缺省的参数必须是从右往左依次次给的,实参是和形参是从左往右依次匹配的.
下面这样是不被允许的:

int Add(int x  = 1, int y = 2, int z )
{
    
    
	return x + y + z;
}

int main()
{
    
    

	printf("x + y + z = %d\n", Add(3));

	system("pause");
	return 0;
}

发生链接时错误
在这里插入图片描述

重载函数

int Add(int x , int y )
{
    
    
	return x + y ;
}

double Add(double x, double y)
{
    
    
	return x + y;
}


int main()
{
    
    

	printf("x + y = %d\n", Add(1, 2));

	printf("x + y = %.2lf\n", Add(1.1, 2.2));

	system("pause");
	return 0;
}

在这里插入图片描述

c语言中不支持两个不同的函数取相同的名字,因为如果取相同名字,在调用函数时就不知道调用哪个函数了。
c++支持两个不同功能的函数取相同的名字,前提是两个同名函数的形参一定不能相同(包括形参的个数和形参类型)。这是因为在程序的由源代码变异成汇编代码,参数信息也会列为函数名的一部分。在程序链接时,寻找函数时其实两个函数的名字已经不同了。
不妨看一下两者的编译之后的汇编代码
在这里插入图片描述

在这里插入图片描述
这两个名字的组成是这样的:
_Z + 源代码中函数名字母的个数 + 函数名字 + 形参类型名的首字母
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50168448/article/details/113482383