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

【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )一 默认参数 1 默认参数简介 2 代码示例 默认参数二 默认参数定义规则 1 默认参数定义在参数列表末尾 2 反面示例 默认参数后有普通参数编译报错 3 正面示例 默认参数需要放在最后 c 默认参数

大家好,欢迎来到IT知识分享网。

博客总结 :

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

一、默认参数


1、默认参数简介

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

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

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

2、代码示例 – 默认参数

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

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

 // 不传入参数 , 使用默认参数值 5  fun(); 

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

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

代码示例 :

// 导入标准 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; } 

执行结果 :

num = 5 num = 7 请按任意键继续. . . 

在这里插入图片描述

二、默认参数定义规则


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

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

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

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

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

反面代码示例 :

// 导入标准 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; } 

执行结果 :

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 都是有 默认值 的参数 ;

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

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

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

完整代码示例 :

// 导入标准 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; } 

执行结果 :

num = 5 num = 7 请按任意键继续. . . 

在这里插入图片描述



























免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118095.html

(0)
上一篇 2025-11-15 20:26
下一篇 2025-11-15 20:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信