C++核心高级编程 --- 3、函数提高

第三章:

3.函数提高

3.1 函数默认参数

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

#include <iostream>
using namespace std;

int func1(int a = 1, int b = 2, int c = 3)
{
    return a + b + c;
}

int func2(int a = 1, int b = 2);

int func2(int a , int b)
{
    return a + b;
}

int main()
{
    int num1 = func1();
    int num2 = func2();
    cout << num1 << endl; //6
    cout << num2 << endl; //3

    system("pause");
    return 0;
}

补充:

  1. 如果某位置参数有默认值,那该位置往后,从左向右,都需要有默认值。

  2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。

3.2 函数占位参数

语法结构:返回值类型 函数名

#include <iostream>
using namespace std;

void func(int a , int) //占位参数也可有默认参数
{
    cout << "func函数的调用" << endl;
}

int main()
{
    func(10, 20);     //占位参数必须填补
    system("pause");
    return 0;
}
3.3 函数重载
3.3.1 函数重载概述

作用:函数名可相同,提供复用性。

满足条件:

  • 同一作用域下

  • 函数名相同

  • 函数参数类型不同或个数不同或顺序不同

#include <iostream>
using namespace std;

void func()
{
    cout << "func函数的调用" << endl;
}

void func(int a)
{
    cout << "func(int a)函数的调用" << endl;
}

void func(int a, double b)
{
    cout << "func(int a, double b)函数的调用" << endl;
}

int main()
{
    func();            //func函数的调用
    func(10);        //func(int a)函数的调用
    func(10, 3.14); //func(int a, double b)函数的调用
    system("pause");
    return 0;
}

补充:函数返回值不可作函数重载条件。

3.3.2 注意事项
  • 将引用作为重载条件

  • 函数重载遇到函数默认参数

//将引用作为重载条件
#include <iostream>
using namespace std;

void func(int& a)
{
    cout << "func(int& a)函数的调用" << endl;
}

void func(const int& a)
{
    cout << "func(const int& a)函数的调用" << endl;
}



int main()
{
    int a = 10;
    func(a);  //func(int& a)函数的调用
    func(10); //func(const int& a)函数的调用
    system("pause");
    return 0;
}
//函数重载遇到函数默认参数
#include <iostream>
using namespace std;

void func(int a)
{
    cout << "func(int a)函数的调用" << endl;
}

void func(int a, int b =10)
{
    cout << "func(int a, int b =10)函数的调用" << endl;
}




int main()
{
    int a = 10;
    func(10);  //报错,出现二义性。
    system("pause");
    return 0;
}

相关推荐

  1. C++核心高级编程 --- 3函数提高

    2024-04-03 15:14:01       37 阅读
  2. C++ 核心编程 - 函数提高

    2024-04-03 15:14:01       41 阅读
  3. C++核心高级编程

    2024-04-03 15:14:01       41 阅读
  4. C++提高编程—01.函数模板

    2024-04-03 15:14:01       49 阅读
  5. C++提高编程——STL:函数对象

    2024-04-03 15:14:01       47 阅读
  6. C++进阶--3.函数提高

    2024-04-03 15:14:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 15:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 15:14:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 15:14:01       82 阅读
  4. Python语言-面向对象

    2024-04-03 15:14:01       91 阅读

热门阅读

  1. 2024 极术通讯-小米SU7汽车智驾芯片一览

    2024-04-03 15:14:01       117 阅读
  2. 面试算法6/400-和至少为 K 的最短子数组

    2024-04-03 15:14:01       32 阅读
  3. 记录一下做工厂的打印pdf程序

    2024-04-03 15:14:01       37 阅读
  4. vue3从精通到入门10:侦听器watch

    2024-04-03 15:14:01       40 阅读
  5. swiper/vue踩坑 切换问题

    2024-04-03 15:14:01       35 阅读
  6. vue2指令

    2024-04-03 15:14:01       34 阅读
  7. springboot对接微信支付V3(非常详细的demo)

    2024-04-03 15:14:01       34 阅读
  8. Shell快捷键大全

    2024-04-03 15:14:01       39 阅读
  9. Spring框架提供三个核心服务

    2024-04-03 15:14:01       39 阅读
  10. 感应开关盖垃圾桶

    2024-04-03 15:14:01       38 阅读