函数重载的规则
C++允许在一个作用域内的某个函数和运算符指定多个定义
函数重载与返回值类型无关,必须参数不同。在同一个作用域内
函数名字相同,参数不同。
•可以使用同一个函数名写多个不同的函数
•在调用函数时会根据不同的参数类型、参数个数/调用不同
名的函数。
函数重载的作用
重载函数通常用来在同一个作用域内,用一个同名函数命名一组
功能相似的函数名的数量,避免了名字空间的污染,对程序的可
读性有很大的好处
函数重载是一种静态多态
(1)多态:用同一个东西表示不同的形态;
(2)多态分为:
静态多态(编译时的多态);
动态多态(运行时的多态);
(3)函数重载是一种静态多态;
函数参数默认值
在函数声明或函数定义的时候直接给形参赋值,这样在函数调用的时候不需要给形参传值,会使用它的默认值
void fun(int t, int a = 2, int b = 3)
{
cout << a << b;
}
void fun(int t = 2, int a, int b = 3)
{
cout << a << b;
}
c语言中为什么不支持函数重载?
答案:在编译.c文件的时候,只会给函数进行简单的重命名;集体的方法是给函数名加上“_”;所以加入两个函数名相同的函数在编译之后的函数名字照样相同;调用时会因为不知道到底要调用哪一个而出错。
c++中函数重载底层是如何处理的?
答案:在.cpp文件中,虽然两个函数名一样,但是他们在符号表中生成的名称不一样。
‘?’表示名称开始,‘?’后边是函数名“@@YA”表示参数表开始,后边的3个字符分别表示返回值类型,两个参数类型。“@Z”表示名称结束。
由于在.cpp文件中两个函数在符号表中的名称不一样,所以是可以编译通过的。