函数参数的拓展

这篇具有很好参考价值的文章主要介绍了函数参数的拓展。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

函数参数的默认值

C++ 中可以在函数声明时为参数提供一个默认值

当函数调用时没有提供默认参数的值,则使用默认值

函数参数的拓展

参数的默认值必须在函数声明中指定

函数参数的拓展

当函数声明时没有出现参数的默认值,而定义的时候出现参数的默认值,编译器会报错

当函数声明时出现参数的默认值,函数定义时也出现参数的默认值,编译器会报错

当函数声明和定义中的参数默认值不同,编译器会报错

#include <stdio.h>

int mul(int x = 0);

int main(int argc, char *argv[])
{
    printf("%d\n", mul());
    printf("%d\n", mul(-1));
    printf("%d\n", mul(2));
    
    return 0;
}

int mul(int x)
{
    return x * x;
}

运行结果如下图所示

函数参数的拓展

mul() 没有参数,所以使用默认参数0 作为参数

函数默认参数的规则

参数的默认值必须从右向左提供

函数调用时使用了默认值,则后续参数必须使用默认值

函数参数的拓展

函数占位参数

在 C++ 中可以为函数提供占位参数

占位参数只有参数类型声明,没有参数名声明

一般情况下,在函数内部无法使用占位参数

函数参数的拓展

函数占位参数的意义

占位参数与默认参数结合起来使用

兼容 C 语言程序中可能出现的不规范写法

函数参数的拓展

在 C 语言中,这两种声明方式不等价,void func() 表示 func 函数接受任意多的参数, void func(void) 表示不接受参数;在 C++ 中,这两种声明方式等价,都表示不接受参数

#include <stdio.h>

int func();

int main(int argc, char *argv[])
{
	func();
    func(1, 2);
    
    return 0;
}

int func()
{
    return 0;
}

上面的代码用用 C 编译器可以编译过,用 C++ 编译器编译不过,这样的 C 代码移植到 C++ 中去可以使用占位参数和默认参数来解决编译不过的问题

#include <stdio.h>

int func(int = 0, int = 0);

int main(int argc, char *argv[])
{
	func();
    func(1, 2);
    
    return 0;
}

int func(int , int)
{
    return 0;
}

使用占位参数和默认参数就可以很好的解决上面的 C 代码移植到 C++ 上出现的编译报错

小结

C++ 中支持函数参数的默认值

如果函数调用时没有提供默认参数值,则使用默认值

参数的默认值必须从右向左提供

函数调用时使用了默认值,则后续参数必须使用默认值

C++ 中支持占位参数,用于兼容 C 语言中的不规范写法文章来源地址https://www.toymoban.com/news/detail-483915.html

到了这里,关于函数参数的拓展的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python-自定义函数(定义调用、默认参数、返回值)

    本篇文章讲解了python中自定义函数的一些知识点,包括了函数的定义和调用,默认参数,函数返回,其中也添加了比较高级的用法,能适应任何场合 函数是什么:函数是一段可执行的代码块,用于执行特定的任务或完成特定的操作。它由函数名、参数(可选)和函数体组成。

    2024年02月09日
    浏览(43)
  • C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造

    构造函数是 C++ 中一种特殊的成员函数,当创建类对象时自动调用。它用于初始化对象的状态,例如为属性分配初始值。构造函数与类同名,且没有返回值类型。 C++ 支持多种类型的构造函数,用于满足不同的初始化需求: 默认构造函数: 不带参数的构造函数,通常用于初始化

    2024年04月22日
    浏览(48)
  • JavaScript全解析——ES6函数中参数的默认值和解构赋值

    本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS! 文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容,主页关注一波! 给函数的形参设置一个默认值, 当你没有传

    2024年02月05日
    浏览(43)
  • 【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式

    在C++11之前,我们只有引用的概念,没有接触到所谓的左值引用或者是右值引用这种概念,从C++11开始,增加了右值引用的概念,那么现在我们将对引用进行一个概念上的区分。在此之前我们所说的引用都是左值引用,对于左值引用相关的内容,可以去看一看博主之前写的文章

    2024年02月15日
    浏览(58)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(55)
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

    ​ ECMAScript 6.0,简称 ES6,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaSc

    2024年04月15日
    浏览(46)
  • 递归函数和其他拓展

    2024年02月09日
    浏览(36)
  • 86. print输出函数知识拓展(有练习题)

    print[prɪnt]:打印,输出。 【功能】 输出程序结果,默认输出到屏幕即程序终端,也可以输出到文件中。 【语法参考】 【参数说明】 value 要输出的值,可以是字符串、整数、浮点数等各种类型的变量等等。 ... 值列表:表示可以一次性打印多个值,值与值之间用英文逗号

    2024年02月05日
    浏览(47)
  • [ROS 系列学习教程] ROS参数服务器(Param):通信模型、Hello World与拓展

    ROS 系列学习教程(总目录) 参数服务器在ROS中主要用于实现不同节点之间的数据共享。 参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。 使用场景一般存储一些机器人的固有参数,

    2024年02月01日
    浏览(46)
  • c++——默认参数和占位参数

    C++允许赋予函数参数默认值,即在调用该函数时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。 1、基本语法 2、默认参数的规则 ①默认值只能在声明中设置 ②注意传参规则,实参给形参传参,是 从前往后 进行 ③给函数参数设置默认值,从 后往前 进

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包