找回密码
 register

QQ登录

只需一步,快速开始

查看: 19|回复: 0

[C++] C++函数的默认参数详解

[复制链接]

[C++] C++函数的默认参数详解

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:241
  • 打卡月天数:18
  • 打卡总奖励:239
  • 最近打卡:2025-07-20 01:16:18
Waylee

主题

0

回帖

2万

积分

仙帝

积分
26271
Waylee 2025-7-19 12:42 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

默认参数(Default Arguments)

在 C++ 中,可以在函数声明或定义时为形参指定默认值。调用该函数时,如果没有为该形参提供实参,就会自动使用默认值;否则,使用用户传入的值。这样既可以简化函数调用,也能减少重载函数的数量。


一、基本用法

#include <iostream>
using namespace std;

// 带默认参数的函数
void func(int n, float b = 1.2f, char c = '@') {
    cout << n << ", " << b << ", " << c << endl;
}

int main() {
    func(10, 3.5f, '#');  // 输出:10, 3.5, #
    func(20, 9.8f);       // 等价于 func(20, 9.8f, '@'),输出:20, 9.8, @
    func(30);             // 等价于 func(30, 1.2f, '@'),输出:30, 1.2, @
    return 0;
}
  • func(10, 3.5f, '#'):为所有参数传值。
  • func(20, 9.8f):省略了最后一个参数,使用默认值 c = '@'
  • func(30):省略了两个参数,依次使用默认值 b = 1.2f, c = '@'

二、默认值的灵活指定

除了字面常量,也可以使用表达式或变量:

float d = 10.8f;
void func2(int n, float b = d + 2.9f, char c = '@') {
    cout << n << ", " << b << ", " << c << endl;
}

注意:表达式会在编译时(若为常量表达式)或运行时(若依赖变量)进行求值。


三、默认参数的语法规则

  1. 只能出现在参数列表末尾
    一旦给某个参数指定了默认值,它右侧的所有参数都必须也有默认值。

    // 合法
    void f(int a, int b = 10, int c = 20);
    void g(int a, int b, int c = 20);
    
    // 非法
    void h(int a, int b = 10, int c, int d = 20);  // c 无默认值
    void j(int a, int b = 10, int c = 20, int d);  // d 无默认值
  2. 匹配顺序从左到右
    调用时,编译器依次将实参与形参匹配,遇到省略就补默认值。

四、使用场景与优势

  • 减少函数重载
    通过默认参数,可以用一个函数覆盖多种调用场景,避免编写多个同名重载。
  • 提高代码可读性
    调用端只需关注常用参数,省略不常变动的参数,使代码更简洁。
  • 灵活配置
    对于一些可选配置项,默认参数提供了良好的扩展性。

五、小结与后续

  • 默认参数只是一种语法糖,不会改变函数的本质调用过程。
  • 在函数声明定义处都可以指定默认参数,但要避免重复或冲突。
  • 下节我们将深入讨论:“到底在声明中还是定义中指定默认参数”
您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2025-7-20 14:03 , Processed in 0.107240 second(s), 5 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表