当前位置: 首页 > 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 ,字符串长度满…...

忍者像素绘卷微信小程序云开发实践:Serverless生成服务架构

忍者像素绘卷微信小程序云开发实践&#xff1a;Serverless生成服务架构 1. 项目背景与核心价值 忍者像素绘卷是一款基于微信小程序平台的云端图像生成工具&#xff0c;采用Serverless架构实现。它将传统漫画创作与AI技术相结合&#xff0c;为用户提供简单高效的像素艺术创作体…...

Laravel Stats Tracker设备检测技术解析:精准识别移动端与桌面端

Laravel Stats Tracker设备检测技术解析&#xff1a;精准识别移动端与桌面端 【免费下载链接】tracker Laravel Stats Tracker 项目地址: https://gitcode.com/gh_mirrors/tr/tracker Laravel Stats Tracker是一款强大的Laravel统计跟踪工具&#xff0c;它提供了精准的设…...

电机轴承异响?5分钟教你用振动分析仪定位故障(附实测案例)

电机轴承异响诊断实战&#xff1a;振动分析仪操作全流程解析 轴承异响是工业现场最常见的电机故障之一&#xff0c;但很多维护工程师面对"嗡嗡"声或"咔嗒"响往往无从下手。上周某化工厂的水泵电机就因轴承早期磨损未被及时发现&#xff0c;导致整机报废&am…...

POIKit:地理数据全流程处理的高效解决方案

POIKit&#xff1a;地理数据全流程处理的高效解决方案 【免费下载链接】AMapPoi POI搜索工具、地理编码工具 项目地址: https://gitcode.com/gh_mirrors/am/AMapPoi 价值定位&#xff1a;重新定义地理数据采集效率 行业痛点与技术突破 在地理信息领域&#xff0c;传统…...

Mac开发者必备:OpenClaw联动千问3.5-27B实现代码审查自动化

Mac开发者必备&#xff1a;OpenClaw联动千问3.5-27B实现代码审查自动化 1. 为什么需要代码审查自动化&#xff1f; 作为独立开发者&#xff0c;我经常面临一个尴尬局面&#xff1a;在深夜提交代码后&#xff0c;第二天才发现引入了低级语法错误或潜在漏洞。传统CI工具虽然能捕…...

DHL集团与中国外运将进一步深化全球业务协同

、美通社消息&#xff1a;近日&#xff0c;DHL集团与中国外运正式签署谅解备忘录。双方宣布&#xff0c;将在过往坚实合作的基础上&#xff0c;进一步深化全球业务协同&#xff0c;共同开启新一轮战略对话与长远布局。此次签约正值双方合资公司——中外运敦豪成立四十周年。作为…...

SoftSPIB:支持任意位宽的软件模拟SPI库

1. SoftSPIB&#xff1a;面向非字节对齐SPI通信的软件实现方案1.1 问题起源&#xff1a;硬件SPI的固有局限性在嵌入式系统开发中&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff09;作为最常用的同步串行总线协议&#xff0c;其标准实现通常以8位&#xff08;…...

libcimbar视觉传输工具实战指南:跨设备无网络数据传输解决方案

libcimbar视觉传输工具实战指南&#xff1a;跨设备无网络数据传输解决方案 【免费下载链接】libcimbar Optimized implementation for color-icon-matrix barcodes 项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar 一、核心价值解析&#xff1a;突破网络限…...

YouTube面临儿童AI内容监管挑战

专家呼吁YouTube停止向儿童推荐AI视频近日&#xff0c;超200名儿童发展专家及相关机构联名致信谷歌和YouTube高层&#xff0c;强烈要求YouTube及YouTube Kids停止向未成年用户展示或推荐AI生成视频。这些专家指出&#xff0c;大量所谓有“教育用途”的AI视频其实内容空洞、质量…...

基于Xilinx Artix-7的JPEG2000图像无损压缩系统:完整工程与独立模块化设计

JPEG2000 图像无损压缩算法 FPGA第三方IP JPEG2K是基于xilinx Artix-7的FPGA完整工程&#xff0c;内有完整的MATLB算法工程和RTL源代码&#xff0c;还有详细的文档 JPEG2000压缩系统部分由6个独立模块组成&#xff1a;去马赛克模块、伽马校正模块、分量间变换模块、小波变换模…...