首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )

【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )

作者头像
韩曙亮
发布2023-10-15 16:48:31
发布2023-10-15 16:48:31
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

博客总结 :

  • 在 声明 函数时 , 为 函数参数 定义一个默认值 ;
  • " 默认参数 " 必须 定义在 参数列表 的 末尾 ;

一、默认参数

1、默认参数简介

" 默认参数 " 概念 : C++ 语言 中的 函数 , 可以在 声明 函数时 , 为 函数参数 定义一个默认值 ;

" 默认参数 " 运行机制 : 在调用 有默认参数值 的 函数时 , 如果没有提供 某个有默认值参数 的 实参 , 那么编译器在 编译阶段 , 就会使用默认值当做实参 ;

" 默认参数 " 可以 简化函数调用 和 提高代码重用性 ;

2、代码示例 - 默认参数

下面的代码中 , 为 void fun(int num = 5) 函数 , 提供了默认参数值 5 ;

如果调用 fun 函数 , 不传入参数 , 则使用默认参数值 5 ; 不传入参数 , 打印的值为 5 ;

代码语言:javascript
代码运行次数:0
运行
复制
    // 不传入参数 , 使用默认参数值 5 
    fun();

如果调用 fun 函数 , 显示传入参数 , 则使用传入的参数 ; 传入参数 7 , 则打印的值为 7 ;

代码语言:javascript
代码运行次数:0
运行
复制
    // 显式传入参数值7
    fun(7);

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 设置了默认参数的函数
void fun(int num = 5) {
    cout << "num = " << num << endl;
}

int main() {
    // 不传入参数 , 使用默认参数值 5 
    fun();
    // 显式传入参数值7
    fun(7);
    

    // 控制台暂停
    system("pause");

    return 0;
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
复制
num = 5
num = 7
请按任意键继续. . .

二、默认参数定义规则


1、默认参数定义在参数列表末尾

" 默认参数 " 必须 定义在 参数列表 的 末尾 ;

一旦在函数的 参数列表 中出现了 " 默认参数 " , 那么 之后的所有参数 都必须有 默认参数 , 否则 编译时 会报错 ;

2、反面示例 - 默认参数后有普通参数编译报错

在下面的函数 void fun(int num, int num1 = 5, int num2) 中 , 第三个参数 num2 是普通的参数 , 只要出现了第一个默认参数 , 之后的所有参数都必须是默认参数 ;

反面代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 设置了默认参数的函数
void fun(int num, int num1 = 5, int num2) {
    cout << "num = " << num << " , num1 = " << num1 << " , num2 = " << num2 << endl;
}

int main() {
    // 显式传入参数值7
    fun(7);
    

    // 控制台暂停
    system("pause");

    return 0;
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
复制
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>Hello.cpp
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(7): error C2548: “fun”: 缺少形参 3 的默认实参
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(13,10): fatal error C1903: 无法从以前的错误中恢复;正在停止编译
1>“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\CL.exe”中的内部编译器错误
1>  请选择 Visual C++
1>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

3、正面示例 - 默认参数需要放在最后

下面的 函数参数 中 , num 是 普通参数 , 没有默认值 ;

后面两个 num1 和 num2 都是有 默认值 的参数 ;

之后如果还有参数 , 也必须有默认值 ;

如果想要设置没有默认值的参数 , 那么必须放在前面 ;

代码语言:javascript
代码运行次数:0
运行
复制
// 设置了默认参数的函数
void fun(int num, int num1 = 5, int num2 = 7) {
    cout << "num = " << num << " , num1 = " << num1 << " , num2 = " << num2 << endl;
}

完整代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 设置了默认参数的函数
void fun(int num, int num1 = 5, int num2 = 8) {
    cout << "num = " << num << " , num1 = " << num1 << " , num2 = " << num2 << endl;
}

int main() {
    // 显式传入参数值7
    fun(7);
    

    // 控制台暂停
    system("pause");

    return 0;
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
复制
num = 5
num = 7
请按任意键继续. . .
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 博客总结 :
  • 一、默认参数
    • 1、默认参数简介
    • 2、代码示例 - 默认参数
  • 二、默认参数定义规则
    • 1、默认参数定义在参数列表末尾
    • 2、反面示例 - 默认参数后有普通参数编译报错
    • 3、正面示例 - 默认参数需要放在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档