函数重载@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)

  如果这么做了,编译器提示函数重复定义

编译器将根据形参实参的类型和个数来的最佳匹配来调用函数

不要把功能不同的函数声明为重载函数

posted on 2018-03-01 23:20  晴未  阅读(317)  评论(0编辑  收藏  举报