C++函数提高

函数默认参数

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

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

#include <iostream>
using namespace std;

int func (int a, int b = 10, int c = 10)  //某个位置有了默认值,这个位置之后必须都有默认值
{
    return a + b + c;  // 输出40 因为用户传入了b 不使用默认值
}

int main()
{
    func(1020);
    return 0;
}

注意事项:

函数声明 和 函数定义(实现)只有一个能有默认参数

函数占位参数

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

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

void func1 (int a, int) // 第二个int是占位参数
{
    cout << "hello world" <<endl;
}

void func2 (int a, int = 20) // 占位参数可以有默认值
{
    cout << "hello world" <<endl;
}

int main()
{
    func1(10, 20); //占位没有默认值时  必须传入第二个值
    func2(10); //占位有默认值时  可以不传入第二个值
    return 0;
}

函数重载

函数重载概述

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

函数重载满足条件

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

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

函数重载的注意事项

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

//1、引用作为 重载的条件
void func (int &a)  //int &a = 10 是不合法的 
{
    cout << "func (int &a)调用" << endl;    
} 

void func (const int &a)//const int &a = 10 是合法的 
{
    cout << "func (const int &a)调用" << endl;    
} 

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

void func2 (int a)
{
    cout << "func2 (int a)调用" << endl;    
}

int main()
{
    int a = 10;
    func (a); // func (int &a)调用
    func (10); //func (const int &a)调用
    
    //func2 (10); //报错 两个func2都能被调用 出现二义性
    func2 (10, 20); //没问题 
    return 0;
}

 

posted @ 2021-08-04 14:24  白藏i  阅读(30)  评论(0)    收藏  举报