C++函数参数的缺省值

C++函数参数的缺省值C 函数参数的缺省值有一些参数的值在每次函数调用时都相同 书写这样的语句会使人厌烦 C 语言采用参数的缺省值使书写变得简洁 在编译时 缺省值由编译器自动插入 nbsp nbsp nbsp 参数缺省值的使用规则 规则 8 3 1 参数缺省值只能出现在函数的声明中 而不能出现在定义体中 例如 nbsp nbsp nbsp voidFoo intx 0 inty 0 正确 缺省值出现在函数的声明中 nbsp

C++函数参数的缺省值

有一些参数的值在每次函数调用时都相同,书写这样的语句会使人厌烦。C++语言采用参数的缺省值使书写变得简洁(在编译时,缺省值由编译器自动插入)。

    参数缺省值的使用规则:

  1. 【规则8-3-1】参数缺省值只能出现在函数的声明中,而不能出现在定义体中。

例如:

    void Foo(int x=0, int y=0); // 正确,缺省值出现在函数的声明中

 

    void Foo(int x=0, int y=0)      // 错误,缺省值出现在函数的定义体中

    {

    }

为什么会这样?我想是有两个原因:一是函数的实现(定义)本来就与参数是否有缺省值无关,所以没有必要让缺省值出现在函数的定义体中。二是参数的缺省值可能会改动,显然修改函数的声明比修改函数的定义要方便。

 

  1. 【规则8-3-2】如果函数有多个参数,参数只能从后向前挨个儿缺省,否则将导致函数调用语句怪模怪样。

正确的示例如下:

void Foo(int x, int y=0, int z=0);

错误的示例如下:

void Foo(int x=0, int y, int z=0); 

 

要注意,使用参数的缺省值并没有赋予函数新的功能,仅仅是使书写变得简洁一些。它可能会提高函数的易用性,但是也可能会降低函数的可理解性。所以我们只能适当地使用参数的缺省值,要防止使用不当产生负面效果。示例8-3-2中,不合理地使用参数的缺省值将导致重载函数output产生二义性。

 

#include

void output( int x);

void output( int x, float y=0.0);

 

void output( int x)

{

    cout << " output int " << x << endl ;

}

 

void output( int x, float y)

{

    cout << " output int " << x << " and float " << y << endl ;

}

 

void main(void)

{

    int x=1;

    float y=0.5;

//  output(x);          // error! ambiguous call

    output(x,y);        // output int 1 and float 0.5

}

 

示例8-3-2  参数的缺省值将导致重载函数产生二义性

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211709.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:47
下一篇 2026年3月18日 下午9:47


相关推荐

  • linux系统压缩zip,linux系统压缩zip命令详解

    linux系统压缩zip,linux系统压缩zip命令详解linux 系统的压缩命令与别的 windows 系统不是很一样 下面来详细的看一下吧 1 unzip 解压到指定目录 unzipmonitor 0 8 2 zip dmonitor2 压缩文件夹 zip rmonitor zipmonitor 3 测试压缩包 root localhostcac unzip tmonitor zip4 查看压缩包详细内容 root lo

    2026年3月26日
    1
  • C语言中正弦函数定义域,三角函数定义域和值域

    C语言中正弦函数定义域,三角函数定义域和值域三角函数定义域和值域 2019 11 2709 51 41 文 董月 sin x cos x 的定义域为 R 值域为 1 1 tan x 的定义域为 x 不等于 2 k 值域为 R cot x 的定义域为 x 不等于 k 值域为 R y a sin x b cos x c 的值域为 c a b c a b 定义三角函数 也叫做 圆函数 是角的函数 它们在研究三角形和建模周期现象和

    2026年3月20日
    2
  • 华三路由器配置命令详解_h3c交换机基本配置命令

    华三路由器配置命令详解_h3c交换机基本配置命令h3c路由器是一款比较只能且配置相对复杂的一款设备,很多时候配置h3c路由器都需要用到命令,下面是学习啦小编整理的一些关于h3c路由器配置命令的相关资料,供您参考。h3c路由器配置命令[Quidway]sysnamerouter_name命名路由器(或交换机)[Quidway]delete删除FlashROM中的配置[Quidway]save将配置写入FlashROM[Quidway]…

    2022年10月18日
    7
  • nginx和apache、lvs区别

    nginx和apache、lvs区别对比项apachenginx简介配置简洁。负载均衡服务器,支持7层负载均衡内存及资源占用多轻量级,同样的web服务占用少稳定性超稳定不稳定,bug多进程同步进程模型异步进程模型(抗并发)处理静态文件性能好(3倍以上)性能差对PHP支持简单需要配合其他后端用rewrite功能性能好(rewrite频繁时用apache)性能差结合机制后端apache集群前端nginx抗并发Nginx轻量级,采…

    2022年6月14日
    30
  • linux 添加用户到组命令,linux下添加用户组和用户

    linux 添加用户到组命令,linux下添加用户组和用户1 linux 下文件权限管理 添加用户组并添加用户添加组 groupadd 组名 groupadddepl etc group grepdeploy 如图 删除组 groupdel 组名 groupdeldepl etc group grepdeploy 查询组 cat etc group 或者使用管道来精确查询 cat etc group grepdev

    2026年2月15日
    2
  • 【2024最新版】MJ保姆级教程 midjourney小白零基础入门到精通教程

    【2024最新版】MJ保姆级教程 midjourney小白零基础入门到精通教程

    2026年3月13日
    3

发表回复

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

关注全栈程序员社区公众号