当前位置: 首页 > news >正文

重载和内联函数

函数的默认参数

默认参数是指调用函数的时候,如果不写实参,那么将使用一个缺省值。

使用默认参数可以使你的函数更加灵活,同时减少了在不同上下文中为相同的参数重复编写相同的代码的需要。

return_type function_name(data_type parameter=value, data_type parameter=value, ...);

注意事项

  1. 如果函数的声明和定义是分开书写的,那么在函数声明中设置默认参数,而在函数定义中则不应设置默认参数。
  2. 函数默认参数必须从右到左设置。也就是说,如果你为一个参数设置了默认值,那么在这个参数右边的所有参数也都必须设置默认值。
  3. 在调用函数时,如果你指定了一个参数的值,那么在这个参数左边的所有参数都必须被指定。

例子

#include <iostream>
using namespace std;void displayMessage(string message = "Hello, World!") {cout << message << endl;
}int main() {displayMessage();        // 将输出 "Hello, World!"displayMessage("Hello, OpenAI!"); // 将输出 "Hello, OpenAI!"return 0;
}

函数重载

在C++中,函数重载是允许程序员创建多个具有相同名字但参数列表不同的函数的特性。这是实现多态性的一种方式,函数根据传入的参数的数量和类型来决定哪个函数将被调用。

以下是一些关于函数重载的注意事项:

  1. 匹配过程:在调用重载函数时,编译器根据实参的数量、类型和顺序与重载函数的形参进行匹配,然后决定调用哪个函数。如果没有找到匹配的函数,编译器将报告错误。
  2. 类型转换:如果传入的实参类型与形参类型不匹配,C++会尝试进行类型转换以使之匹配。但是,如果转换结果导致有多个函数可以匹配,编译器将报告错误,因为它无法确定应该调用哪个函数。
  3. 引用和变量:引用可以作为函数重载的条件。但是,如果实参是变量,编译器将形参类型本身和类型引用视为具有相同的特征。
  4. 默认参数:如果重载的函数有默认参数,可能会导致匹配失败,因为编译器可能无法确定调用哪个函数。
  5. const限定符:const不能作为函数重载的特征。即使一个函数参数为const,而另一个函数参数非const,这还是不能被视为重载。
  6. 返回值类型:函数的返回值类型不能作为函数重载的特征。如果两个函数的参数列表完全相同,但返回值类型不同,编译器不会视这为函数重载。
  7. 名称修饰:在C++编译过程中,编译器使用一个叫做"名称修饰"或"名称混淆"的过程来处理函数重载。它会给每个函数名添加一些特殊字符,以区分参数列表不同的同名函数。这个过程是自动进行的,对程序员来说通常是透明的。

内联函数

内联函数是 C++ 的一个特性,用于提高程序的运行速度。当函数被声明为内联时,它的函数体会在编译时被插入到每个调用该函数的地方,从而减少了函数调用的开销。

语法

inline return_type function_name(parameters) {// 函数体
}

通常,内联函数的声明和定义会被写在一起,并且通常在头文件中进行。

注意事项

  1. 效率与内存使用:内联函数可以提高程序的运行速度,因为它避免了函数调用的开销。但是,这种效率的提升是以增加程序的内存使用为代价的,因为函数的代码在每个调用的地方都会被复制一份。
  2. 函数大小:如果函数体非常大,编译器可能会忽略内联声明,因为这可能导致生成的代码过大。编译器通常会对小型函数(如存取函数)进行内联处理。
  3. 不能递归:内联函数不能是递归的。因为递归函数需要通过堆栈跟踪其递归深度,而内联函数的目标是消除函数调用的开销,包括堆栈操作。

相关文章:

重载和内联函数

函数的默认参数 默认参数是指调用函数的时候&#xff0c;如果不写实参&#xff0c;那么将使用一个缺省值。 使用默认参数可以使你的函数更加灵活&#xff0c;同时减少了在不同上下文中为相同的参数重复编写相同的代码的需要。 return_type function_name(data_type paramete…...

从零学算法

198.你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额…...

《Linux0.11源码解读》理解(四) head之重新设置IDT/GDT

上节提到&#xff0c;现在cs:ip指向0地址&#xff0c;此处存储着作为操作系统核心代码的system模块&#xff0c;是由head.s和 main.c以及后面所有源代码文件编译链接而成。head.s(以下简称head)紧挨着main.c&#xff0c;我们先执行head。 重新设置内核栈 _pg_dir: _startup_3…...

<SQL>《SQL命令(含例句)精心整理版(4)》

《SQL命令&#xff08;含例句&#xff09;精心整理版&#xff08;4&#xff09;》 14 数据库对象14.1 表14.2 视图14.3 存储过程14.3.1 概念14.3.2 创建存储过程14.3.2 调用存储过程14.3.3 DbVisualizer工具中调用方法14.3.3 DB2命令行脚本调用方法14.3.4 DB2中两个存储过程报错…...

C++死锁

死锁是指两个或两个以上的线程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的状态称为死锁。 死锁通常发生…...

[自学记录02|百人计划]纹理压缩

一、什么是纹理压缩 纹理压缩是为了解决内存、带宽问题&#xff0c;专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术。 1.图片格式和纹理格式的区别 (1)图片格式 图片格式是图片文件的存储格式&#xff0c;通常在磁盘、内存中储存和传输文件时使用&#xff1b;例如…...

C++泛型编程之模板

目录 一、什么是泛型编程 二、函数模板 2.1函数模板的概念 2.2函数模板格式 2.3函数模板的原理 2.5函数模板的实例化 2.6模板参数的匹配原则 三、类模板 3.1类模板的定义格式 3.2 类模板的实例化 四、非类型模板参数 五、模板的特化 5.1模板特化的概念&#xff1a;…...

极氪汽车 APP 系统云原生架构转型实践

作者&#xff1a;极氪汽车 前言 新能源汽车已经成为我国汽车市场再次崛起的关键支柱&#xff0c;随着新能源汽车市场的快速发展&#xff0c;不同类型的品牌造车厂商呈现出百花齐放的态势。极氪汽车是吉利控股集团旗下高端纯电汽车新品牌&#xff0c;2021 年 4 月极氪发布首款…...

一个UDP下载服务器的实现(模拟下载文件)

本期分享的主要是使用UDP实现文件下载功能&#xff0c;需要自己编写服务器和客户端&#xff0c;实现的功能主要有以下几个&#xff1a; &#xff08;1&#xff09;服务器可以为请求的用户下发文件数据&#xff08;前提是服务器得有这个数据文件&#xff09; &#xff08;2&…...

01.hadoop上课笔记之hadoop介绍

1.大数据介绍 可以对未来数据预测 google通过搜索预测流感,足球球员有一 定关联…caict可以得到数据hbase hive林子雨mooc数据要进行挖掘(推断更多信息) 2.大数据是非结构化数据多:声音,图片… 3.大数据影响因素 大多快低 tb pb eb zb 1.硬件 2.网络带宽 4.大数据的特征 数据量…...

小鹏汽车Q1财报:押注G6、大力降本,明年智驾BOM降半

‍作者 | 德新编辑 | 王博 小鹏汽车本周发了Q1财报&#xff0c;数据不好看&#xff0c;以致于在微博端也发了公开信。 那后续呢&#xff1f; 小鹏第二季度指引是&#xff0c;总交付数量约为2.1 - 2.2万辆&#xff0c;收入预计约为45 - 47亿元&#xff1b;四季度&#xff0c…...

VMware ESXi 8.0U1a 发布 - 领先的裸机 Hypervisor

VMware ESXi 8.0U1a 发布 - 领先的裸机 Hypervisor 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8-u1/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 2023-06-01, VMware vSphere 8.0U1a 发布。 详见&am…...

Unity的IPreprocessBuild:深入解析与实用案例

Unity IPreprocessBuild Unity IPreprocessBuild是Unity引擎中的一个非常有用的功能&#xff0c;它可以让开发者在构建项目时自动执行一些操作。这个功能可以帮助开发者提高工作效率&#xff0c;减少手动操作的时间和错误率。在本文中我们将介绍Unity IPreprocessBuild的使用方…...

htmlCSS-----CSS选择器(下)

目录 前言&#xff1a; 2.高级选择器 &#xff08;1&#xff09;子代选择器 &#xff08;2&#xff09;伪类选择器 &#xff08;3&#xff09;后代选择器 &#xff08;4&#xff09;兄弟选择器 相邻兄弟选择器 通用兄弟选择器 &#xff08;5&#xff09;并集选择器 &am…...

RDK X3 Module发布,全新软硬件平台加速实现量产级产品落地

机器人开发是一段美妙的旅程。GEEKROS创始人杨状状是地平线社区的一名开发者&#xff0c;热衷于鼓捣各类机器人&#xff0c;2022年&#xff0c;状状第一时间就拿到了地平线旭日X3派&#xff08;简称旭日X3派&#xff09;&#xff0c;基于TogetheROS™.Bot机器人操作系统&#x…...

【面试实战】Redis缓存设计

文章目录 Redis缓存出现的问题🙎‍♂️面试官:什么是缓存雪崩?🙎‍♂️面试官:怎样解决缓存雪崩?🙎‍♂️面试官:什么是缓存击穿?🙎‍♂️面试官:怎样解决缓存击穿?🙎‍♂️面试官:什么是缓存穿透?🙎‍♂️面试官:怎样解决缓存穿透?🙎‍♂️面试官:…...

如何解决js定时器不准确问题

为什么会出现定时器不准确呢&#xff1f; 这个其实就得提到js执行机制了&#xff0c;叫做事件循环Eventloop 循环机制中&#xff0c;异步事件 setInterval 到时后会把回调函数放入消息队列中Event Queue&#xff0c;主线程的宏任务执行完毕后依次执行消息队列的微任务&#xff…...

学习笔记——vue中使用el-dropdown组件报错

今天在工作中&#xff0c;发现使用el-select做的下拉框&#xff0c;下拉菜单展开后&#xff0c;鼠标点击下拉框之外的区域时&#xff0c;下拉菜单没有收起。然后&#xff0c;我打开控制台&#xff0c;发现了这个错误。 Uncaught TypeError: Cannot read properties of null (re…...

Java之旅(八)

Java 条件运算符 Java 条件运算符用于根据一个条件表达式的布尔值来决定程序执行的流程。条件运算符有三种类型&#xff1a;if、else 和 switch。 if 语句的一般格式如下&#xff1a; if (condition) {// 条件为 true 执行的代码块 } 其中&#xff0c;condition 是一个 bool…...

华为OD机试真题(Java),四则运算(100%通过+复盘思路)

一、题目描述 输入一个表达式(用字符串表示),求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。 数据范围:表达式计算结果和过程中满足∣val∣≤1000 ,字符串长度满…...

空馈方法导向的高增益天线方法【附模型】

✨ 长期致力于环焦反射面、反射阵、透射阵、相位效率、宽带、高效率、低剖面、口径场叠加、轨道角动量研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09…...

【Android】针灸大师-穴位解剖精准经络系统-医学生必备-会员版

【Android】针灸大师-穴位解剖精准经络系统-医学生必备-会员版 链接&#xff1a;https://pan.xunlei.com/s/VOtJd241jF6B-cTY3Gs64aacA1?pwdeynm# 针灸大师&#xff08;Acupuncture master&#xff09;将经络穴位与人体精细解剖相结合,是交互式学习十二经脉,奇经八脉,经络系统…...

关于fiddler报错“The system proxy was changed. click to reenable capturing”的解决办法

背景&#xff1a;第一次下载安装fiddler&#xff0c;安装过程没有任何问题&#xff0c;但启动即报错 参考了很多帖子&#xff0c;一个一个排查后&#xff0c;发现是sslvpn的问题&#xff08;因为访问校园网需要安装了 EasyConnect 深信服SSLVPN客户端&#xff09;&#xff0c;把…...

不会 CSS 也能做出惊艳 PPT!Frontend Slides这个开源 Claude Code 技能让 AI 帮你生成 12 种风格演示文稿,告别千篇一律的紫渐变

不会 CSS 也能做出惊艳 PPT&#xff01;Frontend Slides这个开源 Claude Code 技能让 AI 帮你生成 12 种风格演示文稿&#xff0c;告别千篇一律的紫渐变 &#x1f4a1; 每次做 PPT 都在 Powerpoint 里拖来拖去&#xff0c;最后做出来还是那个味儿&#xff1f;Frontend Slides 让…...

3步告别资源焦虑:跨平台下载神器res-downloader深度解析

3步告别资源焦虑&#xff1a;跨平台下载神器res-downloader深度解析 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否曾…...

DeepSeek / Qwen 大模型在昇腾上的推理优化实战

前言 把DeepSeek-V3和Qwen2.5-72B部署到昇腾910B集群上。客户说"GPU上跑得好好的&#xff0c;换昇腾应该也行吧"。结果第一天就被砸懵——同样的模型、同样的batch&#xff0c;昇腾上吞吐只有GPU的60%。不是算力不够&#xff0c;是我根本没搞清楚CANN的优化逻辑和CUD…...

linux基础命令有哪些? linux基础命令使用方法

本期介绍linux基础命令的使用1、用who命令显示当前Linux系统的用户名2、使用下列命令显示有关计算机系统信息&#xff1a;uname(显示操作系统的名称)&#xff0c;uname –n(显示系统域名)&#xff0c;uname –p(显示CPU 的名称)3、使用passwd命令修改用whoami命令找到的用户名和…...

微服务限流实战:Nginx 漏桶与网关令牌桶

限流不是为了让系统“变慢”&#xff0c;而是为了让系统在突发流量、恶意请求或超过承载能力时&#xff0c;仍然能保住核心服务。 一句话概括&#xff1a;限流是在入口处控制请求速度或并发数量&#xff0c;Nginx 常用漏桶算法控制请求流出速率&#xff0c;Spring Cloud Gatewa…...

Tigshop 开源商城系统 JAVA v5.8.28 版本发布|『角色权限管理+店铺后台跳转逻辑』优化

全新迭代&#xff01;Tigshop 开源商城系统 JAVA v5.8.28 版本强势上线&#xff01;直击后台权限配置繁琐、跳转场景不精准两大痛点&#xff0c;『角色权限管理店铺后台跳转逻辑』同步优化&#xff0c;实现管理员权限与角色联动、店铺/门店后台精准跳转店铺/门店首页&#xff0…...

GPU代码跨平台转译技术解析与实践

1. GPU代码转译的技术背景与挑战 在异构计算领域&#xff0c;NVIDIA的CUDA和AMD的ROCm构成了两大主流GPU计算生态。CUDA凭借先发优势已成为深度学习和高性能计算的事实标准&#xff0c;但其闭源特性导致严重的硬件锁定问题。根据2024年MLPerf基准测试报告&#xff0c;超过87%的…...