函数重载@C++
函数重载通过静态多态性实现
静态多态性 在编译阶段实现的多态性
函数重载
C++允许 功能相近的函数 在相同的作用域内 以相同函数名声明 从而形成重载 方便使用和记忆
如函数
#include<iostream> using namespace std; int abs(int a) { return (a > 0 ? a : -a); } double abs(double a) { return (a > 0 ? a : -a); } int main() { int a = -5; cout << abs(a); return 0; }
(以上代码运行会报错重定义,但是并不是因为函数重载)
答案是 在<iostream>中可能包含了其他库,这个库已经包含了abs函数了,所以定义函数时,注意不要和库函数重名
两个函数重名 但是功能相近,只是接受的参数一个是int型,一个是double型
这种情况下使用函数重载,方便使用
函数重载的类型
1.形参类型不同 如上例
2.形参的个数不同
如 int add(int x, int y)
int add(int x, int y, int z)
注意事项
重载函数的形参必须不同:个数或类型
编译器不以形参名区分
如
int add(int a, int b)
int add(int x, int y)
不以返回值区分
如
void add(int x, int y)
int add(int x, int y)
如果这么做了,编译器提示函数重复定义
编译器将根据形参实参的类型和个数来的最佳匹配来调用函数
不要把功能不同的函数声明为重载函数