【C++】函数参数扩展 ② ( 占位参数 | 占位参数规则 - 必须为占位参数传入实参 | 默认参数与占位参数结合使用 )


博客总结 :

  • 默认参数 : 在 声明 函数时 , 为 函数参数 定义一个默认值 ;
  • 默认参数规则 : " 默认参数 " 必须 定义在 参数列表 的 末尾 ;
  • 占位参数 : 只声明 参数类型 , 不声明 参数名 ;
  • 占位参数规则 : 占位参数 必须传入 实参值 ;




一、占位参数




1、占位参数简介


占位参数 概念 : 在 C++ 语言中 , " 占位参数 " 是一种特殊的 函数参数 , 用于在 函数 定义时 预留一个 参数位置 , 只声明 参数类型 , 不声明 参数名 ;

无法访问 : 由于 占位参数 没有 参数名称 , 函数 的 函数体 中 , 无法访问 占位参数 ;


占位参数作用 : " 占位参数 " 为以后得函数留下扩展空间 ;


2、占位参数规则 - 必须为占位参数传入实参


函数 占位参数 使用 : 如果为 函数 定义了 " 占位参数 " , 则使用函数时 , 必须为 占位参数 传入实参 , 否则少一个函数会报错 ;


在函数中 , 定义了 2 个普通参数 , 和 1 个占位参数 :

// 为函数设置占位参数
void fun(int num, int num1, int) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << endl;
}

如果调用上述 fun 函数时 , 只传入两个普通参数 , 就会报错 :

    // 传入 2 个参数
    fun(1, 2);

报错信息如下 :

  • “fun”: 函数不接受 2 个参数
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>Hello.cpp
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(13,13): error C2660: “fun”: 函数不接受 2 个参数
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(7,6): message : 参见“fun”的声明
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

错误代码示例 :

扫描二维码关注公众号,回复: 16424229 查看本文章
// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 为函数设置占位参数
void fun(int num, int num1, int) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << endl;
}

int main() {
    
    
    // 传入 2 个参数
    fun(1, 2);

    // 传入 3 个参数
    fun(1, 2, 3);
    

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

    return 0;
}

在这里插入图片描述





二、默认参数与占位参数结合使用




1、结合用法


一旦为 函数 定义了 " 占位参数 " , 则使用函数时 , 必须为 占位参数 传入实参 , 否则少一个函数会报错 ;

但是 占位符 并不是我们需要的参数 , 方法体中也无法访问到 ;

平时开发时 , 一直带着一个不需要的参数 , 没有意义 ;

这里就可以将 占位参数 与 默认参数 结合使用 ,


为 函数 最后一个 占位参数 设置 默认只 2 ;

// 为函数设置占位参数
void fun(int num, int num1, int = 2) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << endl;
}

调用上述 fun 函数时 , 既可以传入 2 个参数 , 又可以传入 3 个参数 ;

  • 如果传入 2 个参数 , 则最后一个 占位参数 使用默认值 2 ;
  • 如果传入 3 个参数 , 则最后一个 占位参数 使用传入的值 3 ;
    // 传入 2 个参数
    fun(1, 2);

    // 传入 3 个参数
    fun(1, 2, 3);

不管 是否 传入 占位参数 , 占位参数 在函数体内 , 都不可访问 ;


2、代码示例 - 占位参数与默认参数结合用法


代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;

// 为函数设置占位参数
void fun(int num, int num1, int = 2) {
    
    
    cout << "num = " << num << " , num1 = " << num1 << endl;
}

int main() {
    
    
    // 传入 2 个参数
    fun(1, 2);

    // 传入 3 个参数
    fun(1, 2, 3);
    

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

    return 0;
}

执行结果 :

num = 1 , num1 = 2
num = 1 , num1 = 2
请按任意键继续. . .

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/132678857