C++默认参数函数及函数重载

有默认参数函数

1.什么是有默认参数函数
一般情况下,C语言中在函数调用时形参从实参取得,但是在C++中提供一种简单处理方法给形参一个默认值,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。

2.代码实现:

#include<iostream>
using namespace std;

void fun(int a = 1,int b = 2)
{
    cout << a <<endl;
    cout << b <<endl;
    return;
}

int main()
{
    fun();       //未传入参数,使用默认值
    fun(3,4);    //传入参数时,使用传入的参数
}

运行结果:
这里写图片描述

3.由于实参与形参的结合是从左到右顺序进行,所以有默认值的形参必须放在最右侧。

例:

void fun(int a = 1,int b)   //错误
void fun(int b,int a = 1)   //正确

同样的,当调用函数时,若该形参未传入参数,则形参使用定义时的默认值。

4.当函数调用在函数定义前时,需要在函数声明时给出默认值,此时,在函数定义时就不需要给出默认值。
如果在声明函数时给出了默认值,在定义函数时也给出了默认值不同编译器可能给出报错信息,所以建议只在函数声明时给出默认值以避免混淆。

函数重载

1.什么是函数重载?

在C++中一个函数名可以定义多个函数,这些函数根据传入参数个数及类型进行调用,这就是函数的重载。即对一个函数名增加定义,使一个函数名可以有多种用途。

2.代码实现:

int add(int a,int b)         //int类型变量加法
{
    return a+b;
}

double(double a, doublr b)   //重载后增加double类型加法
{
    return a+b;
}
  • 注:

    • 当函数重载时不能只有函数类型相同,而参数个数,类型,顺序全相同;

      • 因为当这样定义函数后,编译系统无法判断到底使用哪一个函数。
    • 当函数重载时传参个数,参数类型,参数顺序不允许全部相同;

      • 同样的定义参数全相同的重载函数后,编译系统无法判断到底使用哪一个函数。
    • 当函数重载时,尽量使函数作用相近或同;

      • 提高程序可读性,便于理解、阅读。
    • 函数不能既为重载函数,又为有默认参数函数。

      • 当未传入参数时,系统无法判定调用哪一个参数。
错误示范1:
int fun(int a)

void fun(int a)//不允许只有函数类型相同,错误
错误示范2:
int fun(int a = 1int fun(int a = 1,int b = 2)//函数不能既为重载函数,又为有默认参数函数。错误
posted @ 2017-09-04 13:10  DuanRui  阅读(308)  评论(0编辑  收藏  举报