c++ 学习之函数的默认参数

当在C++中使用默认参数时,你可以在函数声明中为一个或多个参数指定默认值。这允许你在调用函数时,如果没有为这些参数提供实际值,编译器会使用你提供的默认值。这样可以在不同的情况下使用同一个函数,避免编写多个函数重载。

以下是更详细的关于C++中默认参数的讲解:

默认参数的语法:

在函数声明中,你可以在参数列表中为某些参数指定默认值。默认参数通常在参数列表的右侧,也就是说,如果一个参数有默认值,其右边的所有参数也必须有默认值。

returnType functionName(parameterType parameterName = defaultValue);

这里的 returnType 是函数的返回类型,functionName 是函数名,parameterType 是参数的数据类型,parameterName 是参数名,defaultValue 是参数的默认值。

默认参数的使用:

默认参数使函数调用更加灵活。如果你在函数调用中省略了某个有默认值的参数,编译器将使用你提供的默认值来初始化它。

void printMessage(const char* message, int count = 1);

在上述示例中,count 参数有默认值 1。如果你调用 printMessage(“Hello”),它会被解释为 printMessage(“Hello”, 1)。

默认参数的声明和定义:

默认参数只能在函数声明中指定,而不是在函数定义中。这是因为编译器需要知道函数调用时哪些参数是有默认值的。

// 函数声明,有默认参数
void printMessage(const char* message, int count = 1);int main() {printMessage("Hello");  // 使用默认的 count 参数值return 0;
}// 函数定义
void printMessage(const char* message, int count) {// 函数实现
}

注意事项:

  • 当存在多个默认参数时,你可以通过使用参数名来显式地提供某个参数的值,以避免混淆。
  • 默认参数通常在函数参数列表的末尾,因此你可以根据需要从左到右为参数提供值,而无需提供默认值。
  • 使用默认参数可以简化代码,提高代码的可读性,并避免创建多个函数重载来处理稍有不同的情况。但同时,也要注意避免过度使用默认参数,以免造成调用时的混淆。
void function(int a, int b = 5 , int  c)    // 错误void function(int a, int b = 5 , int  c = 6)    // 正确

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十一章 CUDA的NMS算子实战篇(上篇)

cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…

农村农产品信息展示网站的设计与实现(论文+源码)_kaic

摘 要 随着软件技术的迅速发展,农产品信息展示的平台越来越多,传统的农产品显示方法将被计算机图形技术取代。这种网站技术主要把农产品的描述、农产品价格、农产品图片等内容,通过计算机网络的开发技术,在互联网上进行展示,然后通过计算机网…

Little Kernel代码学习笔记

目录 虚拟地址转换为物理地址内核启动Multiboot头部结构启动时的寄存器状态real_start段选择子初始化BSS段 页表转换设置CR4、CR3、EFER寄存器设置页表映射 初始化IDT,执行lk_main 虚拟地址转换为物理地址 // start.S#define PHYS_LOAD_ADDRESS (MEMBASE KERNEL_L…

多功能租车平台微信小程序源码 汽车租赁平台源码 摩托车租车平台源码 汽车租赁小程序源码

多功能租车平台微信小程序源码是一款用于汽车租赁的平台程序源码。它提供了丰富的功能,可以用于租赁各种类型的车辆,包括汽车和摩托车。 这个小程序源码可以帮助用户方便地租赁车辆。用户可以通过小程序浏览车辆列表,查看车辆的详细信息&…

npm 卸载 vuecli后还是存在

运行了npm uninstall vue-cli -g,之后是up to date in,然后vue -V,版本号一直都在,说明没有卸载掉 1、执行全局卸载命令 npm uninstall vue-cli -g 2、删除vue原始文件 查看文件位置,找到文件删掉 where vue 3、再…

《基于 Vue 组件库 的 Webpack5 配置》6.将字体库和图片等静态资料,编译后打包至指定文件夹

参考 Rule.generator.filenamepackage.json 的配置如下 module.exports {module: {{test: /\.(png|svg|jpg|jpeg|gif)$/i,type: asset/resource,generator: {// publicPath: assets/imgs/, // filename: imgs/[hash][ext],}},{test: /\.(woff|woff2|eot|ttf|otf)$/i,type: as…

菜鸟教程《Python 3 教程》笔记(1):基本数据类型

菜鸟教程《Python 3 教程》笔记(1):基本数据类型 1 基本数据类型1.1 Number(数字)1.2 String(字符串)1.3 bool(布尔类型)1.4 List(列表)1.5 Tuple…

[Go版]算法通关村第十三关黄金——数字数学问题之数论问题(最大公约数、素数、埃氏筛、丑数)

目录 题目:辗转相除法(求最大公约数)思路分析:辗转相除法(也叫欧几里得算法)gcd(a,b) gcd(b,a mod b)复杂度:时间复杂度 O ( n l o g ( m a x ) ) O(nlog(max)) O(nlog(max))、空间复杂度 O (…

探索pytest:Python自动化测试的新境界

在当今的软件开发领域,测试已经不仅仅是一个简单的步骤,而是确保软件质量的核心环节。Python,作为全球最受欢迎的编程语言之一,拥有丰富的测试框架和工具。而在这其中,pytest无疑是最受欢迎和最具影响力的一个。本文将…

ICS PA1

ICS PA1 init.shmake 编译加速ISA计算机是个状态机程序是个状态机准备第一个客户程序parse_argsinit_randinit_loginit_meminit_isa load_img剩余的初始化工作运行第一个客户程序调试:零断点TUI 基础设施单步执行打印寄存器状态扫描内存 表达式求值词法分析递归求值…

Go的基础运行方式和打包

目录 基础运行方式导入路径 打包技巧相关知识点 基础运行方式 // 文件名可以不是main,但包名和入口函数比如是main // main.go package main // 导入包的时候可以直接导入,也可以导入后指定包名, import ("fmt"godemo "githu…

35岁生日一过,突然无法正常工作了

大厂裁员,称35岁以后体能下滑,无法继续高效率地完成工作;体重上涨,因为35岁以后新陈代谢开始变慢;甚至坐久了会腰疼、睡眠困扰开始加重,在众多的归因中,仿佛35岁的到来,会为一切的焦…

Android学习之路(10) setContentView详解

一、简介 setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件放在Activity中显示,下面我们根据源码分析setContentView是如何做到的 二、源码分析 1.两种setContentView 注意Activity的setContentView和AppCompatActivity的setCo…

斯坦福人生设计课——简略笔记

来源:⽐尔博内特 戴夫伊万斯 著图书《人生设计课》 目录 一、认清当下的情况,从四个维度观察自己的人生 二、平衡人生,但不要走入误区 2.1 记录你的“美好时光日志”: 2.1.1 记录内容: 2.1.2 辅助反思的方法&…

WebRTC音视频通话-iOS端调用ossrs直播拉流

WebRTC音视频通话-iOS端调用ossrs直播拉流 之前实现iOS端调用ossrs服务,文中提到了推流。没有写拉流流程,所以会用到文中的WebRTCClient。请详细查看:https://blog.csdn.net/gloryFlow/article/details/132262724 一、iOS播放端拉流效果 二…

强训第40天

选择 A 在域名解析之前,需要先与访问域名服务器,与域名服务器之间的网络通信需要涉及相邻设备之间的数据传输。也就是ARP,所以ARP是第一个 B C D 可靠传输的基础是确认应答以及超时重传。这俩是通过序号和确认序号交付的 A B 对用户是不透明的…

Rust之自动化测试(一):如何编写测试

开发环境 Windows 10Rust 1.71.1 VS Code 1.81.1 项目工程 这里继续沿用上次工程rust-demo 编写自动化测试 Edsger W. Dijkstra在他1972年的文章《谦逊的程序员》中说,“程序测试可以是一种非常有效的方法来显示错误的存在,但它对于显示它们的不存在…

架构评估-架构师之路(十二)

软件系统质量属性 软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。 质量属性 性能:指 系统的响应能力,如 响应时间,吞吐率。 设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。 可靠…

【ArcGIS Pro二次开发】(62):复制字段

应网友需求,做了这么一个复制字段的小工具。 假定这样一个场景,手头有一个要素1,要素里有10个字段,另一个要素2,除了shape_area等图形字段外,没有其它字段。 现在的需求是,想把要素1中的8个字…

【跨域异常】

想在前端使用vue获取后端接口的数据,但是报了跨域异常,如下图所示。 一种解决的方式是,在后端Controller接口上加上CrossOrigin,从后端解决跨域问题。 还要注意前端请求的url要加上协议,比如http://