C++学习(7)—— 函数提高

1. 函数默认参数

在C++中,函数的形参列表中的形参是可以有默认值的

语法:返回值类型 函数名 (参数=默认值){}

注意

  1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值

  2. 如果函数的声明有了默认参数,那么函数的实现就不可以有默认参数

#include<iostream>
using namespace std;

//函数的默认参数

//如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值
int func(int a, int b=20, int c=30){
    return a+b+c;
}

//注意事项
//1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值
//2. 如果函数的声明有了默认参数,那么函数的实现就不可以有默认参数
int main(){

    cout<<func(10,30)<<endl;
    return 0;

}

2. 函数的占位参数

C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置

语法:返回值类型 函数名(数据类型){}

#include<iostream>
using namespace std;

//占位参数
//占位参数 可以有默认参数
void func(int a, int = 10){
    cout<<"this is func"<<endl;
}


int main(){

    func(10);
    return 0;

}

3. 函数重载

3.1 函数重载概述

作用:函数名可以相同,提高复用性

函数重载满足条件

  • 同一个作用域下
  • 函数名称相同
  • 函数参数类型不同 或者 个数不同 或者 顺序不同

注意:函数的返回值不可以做为函数重载的条件

#include<iostream>
using namespace std;

//函数重载
//可以让函数名相同,提高复用性

//函数重载的满足调价
//1.必须在同一个作用域下
//2.函数名称相同
//3.函数参数类型不同或者个数不同或者顺序不同
void func(){
    cout<<"this is func"<<endl;
}

void func(int a){
    cout<<"this is func(int a)"<<endl;
}

void func(double a){
    cout<<"this is func(double a)"<<endl;
}

//注意事项
//函数的返回值不可以做为函数重载的条件

int main(){

    func();
    func(10);
    func(3.14);
    return 0;

}

3.2 函数重载注意事项

  • 引用作为重载条件
  • 函数重载碰到函数默认参数
#include<iostream>
using namespace std;

//函数重载的注意事项
//1.引用作为重载的条件
void func(int &a){    
    cout<<"this is func(int &a)"<<endl;
}

void func(const int &a){
    cout<<"this is func(const int &a)"<<endl;
}

//2.函数重载碰到默认参数
void func2(int a, int b = 10){
    cout<<"this is func2(int a)"<<endl;
}

void func2(int a){
    cout<<"this is func2(int a)"<<endl;
}

int main(){

    int a = 10;
    func(a);

    func(10);

    func2(10);  //报错,出现二义性

    return 0;

}
posted @ 2019-12-03 20:48  马尔尤尤  阅读(162)  评论(0编辑  收藏  举报