C++初阶

1.缺省参数

给缺省参数的时候,不能声明,定义同时给,只能声明的时候给缺省参数,同时给程序报错;

2.函数重载

C语言不允许同名函数的存在,函数名不能相同,C++引入函数重载,函数名可以相同,但是参数的类型不能相同,或者是类型相同但是类型的顺序不同;

传参的时候,编译器会自动识别类型,C++对函数名进行了修饰,不同的平台修饰的规则不同,只要类型不同,类型的个数不同,修饰的名字就不会相同,这样我们在找的时候就可以找到了;

这里的重载就是参数的类型不相同,调用某一个函数编译器自动识别类型,调用第一个就选择int类型,调用第二个就选择double类型;

函数名的修饰是前面的固定的格式加上参数的没醒,返回值不同,不能构成函数的重载,这个不是因为修饰的名字里面没有返回子,而是因为我们的调用函数无法根据返回值进行寻找,因为我们可以直接进行调用,不指定返回值的类型,就算修饰的名字里面有返回值也是不能构成函数重载的。

3.引用

引用就是取一个绰号

这里就是指的是i就是k,k就是i,所以打印的地址是一样的,进行加加操作他们会同时加加;

我们可以给i取2个绰号,也可以给k接着取绰号;

那么这个引用的意义何在呢:我们在调用函数进行交换的时候,我们知道形参是实参的一份临时拷贝,所以对于形参的修改不影响实参,我们必须使用指针进行传参,那么我们学习了引用之后,就多了一种途径,就是使用别名进行传参,这个时候参数就是别名,别名就是参数,这样就会交换成功了,示例如下:

(1)引用的时候必须定义时候初始化

(2)一个变量可以有多个别名;


4.引用的使用场景

(1)作为参数

(2)作为返回值

如果不加上static的话,变量的作用域就是在函数内部,出了作用域,就会销毁了;

下面的加上static就会存放到静态区里面,栈帧销毁了以后,这个值还是存在的;

TIP:我们现在已经了解了

栈帧的销毁不影响生命周期,这个时候就可以使用传引用返回;

(3)具体实践

这个代码就相对而言比较复杂了,这个里面用到了结构体的定义和初始化,这个引用有2个作用

既可以减少空间的消耗,也可以直接对数组里面的数据进行赋值,直接可以改变大小,

在函数定义中,AY& ay 表示参数 ay 是一个引用类型,引用了 AY 结构体类型的对象;

这意味着在函数内部对 ay 的修改将直接反映到传入的对象上,而不是创建新的副本。通过引用作为函数参数,我们可以避免复制大型对象的开销,并且可以直接修改传入的对象。

在 PosAt 函数中,通过引用 AY& ay,我们可以直接访问和操作传入的 ay 对象的成员变量和数组元素。ay.a[i] 可以访问 ay 对象的 a 数组中的第 i 个元素,因此调用的函数栈帧销毁了以后,这个结构体变量是不会销毁的,因此我们可以进行传引用。

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

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

相关文章

IDEA启动时,电脑非常的卡

选择Help -> Change memory Settings 把启动内存调大一点就行了,反正要超过你平时使用IDEA时使用到的内存大小就行。 原因解释: JVM在运行时会回收新生代和老年代的垃圾,新生代无法回收的对象,比如:回收15次都没有…

什么是递归组件?

递归组件是指在Vue.js中,组件内部直接或间接地引用自身的情况。通过递归组件,可以实现树形结构、评论列表、菜单等具有层级关系的数据展示。 在使用递归组件时,需要注意以下几点: 定义方式:在Vue组件中,可…

2024华为OD机考面试经验分享

什么是华为OD? 华为OD因为还是外包性质,相对正编来说要轻松一些。(前提是你不想去卷A绩效),一般情况可以八九点就溜下班。然后工作环境的话,和正编一样。 很多小伙伴其实都是从大城市想回老家&#xff0c…

希尔排序的应用场景

下面是一个简单的希尔排序的代码实现,使用Python语言: def shell_sort(arr):n len(arr)gap n // 2 # 初始化间隔# 间隔逐渐减小while gap > 0:for i in range(gap, n):temp arr[i]j i# 插入排序的步骤while j > gap and arr[j - gap] > t…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统(深度学习模型+UI界面+训练数据集)

摘要:开发农作物害虫检测系统对于提高农业生产效率和作物产量具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个农作物害虫检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5&#xff0…

密码校验规则(不能包含3个及以上字典、键盘连续字符)

需求 1、长度大于8,且小于32 2、不能包含用户名 3、不能包含连续3位及以上相同字母或数字 4、不能包含3个及以上字典连续字符 4、数字、小写字母、大写字母、特殊字符,至少包含三种 package com.yy.springboottest.util;/*** author ode* create 2024-03…

前端请求到 SpringMVC 的处理流程

1. 发起请求 客户端通过 HTTP 协议向服务器发起请求。 2. 前端控制器(DispatcherServlet) 这个请求会先到前端控制器 DispatcherServlet,它是整个流程的入口点,负责接收请求并将其分发给相应的处理器。 3. 处理器映射&#xf…

物体检测-系列教程24:YOLOV5 源码解析14 (训练过程解读:训练配置文件、训练脚本train.py)

😎😎😎物体检测-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 18、训练配置文件 位置yolov5/data文件夹/hyp.scratch.yaml文件 文件内容: …

SpringBoot项目中出现不同端口跨域问题,如何解决?

方法一:比较繁琐,适合少量Controller控制器类 方法二 :需要写一个全局的配置文件即可 在如图所示的common目录下新建一个CorsConfig的class文件 具体代码展示: import org.springframework.context.annotation.Bean; import o…

前端Vue列表组件 list组件:实现高效数据展示与交互

前端Vue列表组件 list组件:实现高效数据展示与交互 摘要:在前端开发中,列表组件是展示数据的重要手段。本文将介绍如何使用Vue.js构建一个高效、可复用的列表组件,并探讨其在实际项目中的应用。 效果图如下: 一、引言…

功能测试--APP性能测试

功能测试--APP性能测试 内存数据查看内存测试 CPU数据查看CPU测试 流量和电量的消耗流量测试流量优化方法电量测试电量测试场景(大) 获取启动时间启动测试--安卓 流畅度流畅度测试 稳定性稳定性测试 内存数据查看 内存泄露:内存的曲线持续增长(增的远比减…

git上拉下来的web项目,只有一个.git路径解决

代码拉下来的时候,web项目路径只有一个.git,可能指没有致命分支: 用idea打开web项目;切换到对应的分支即可

基于Ambari搭建大数据分析平台

一、部署工具简介 1. Hadoop生态系统 Hadoop big data ecosystem in Apache stack 2. Hadoop的发行版本 Hadoop的发行版除了Apache的开源版本之外,国外比较流行的还有:Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等&am…

Vuex和Pinia

Vuex概述 vuex是一个vue的状态管理工具,状态就是数据(多组件共享数据)。 优势: 共同维护一份数据,数据集中化管理响应式变化操作简洁(vuex提供了一些辅助函数) vuex的使用 安装vuex插件 y…

代理IP是否会导致网络连接变慢?

目录 一、代理IP的工作原理及其在网络中的作用 二、代理IP可能导致网络连接变慢的因素 三、案例分析 四、优化代理IP使用的建议 五、总结 在网络世界中,代理IP的使用非常普遍,尤其是在需要隐藏真实IP地址、访问受限资源或进行网络爬虫等场景下。然而…

4. Linux文件属性和目录系列

在 Linux 系统中,文件和目录是基本的文件系统组成部分。文件系统是用于组织和存储文件的一种结构,而文件和目录则是文件系统的核心元素。以下是对 Linux 文件和目录的详细解释: 1. 文件(File) 在 Linux 中,文件是数据的集合,可以是文本文件、二进制文件、设备文件等。…

1362:家庭问题(family)

【算法分析】 搜索 从每个顶点尝试开始搜索,如果成功开始进行一次搜索,即可标记整个连通分量。成功开始搜索的次数即为连通分量的个数。搜索过程中对这一趟搜索到的顶点做计数,能达到在最大计数即为顶点数量最多的连通分量的顶点数。…

如何查看mnist数据集的图片

import numpy as np import matplotlib.pyplot as pltdef read_mnist_images(filename):with open(filename, rb) as f:# 读取魔术数字、图像数量、行数、列数magic_number int.from_bytes(f.read(4), big)number_of_images int.from_bytes(f.read(4), big)rows int.from_by…

UE4案例记录

UE4案例记录(制作3D角色显示在UI中) 制作3D角色显示在UI中 转载自youtube视频 https://www.youtube.com/channel/UCC8f6SxKJElVvaRb7nF4Axg 新建项目 创建一个Actor 场景组件->摄像机组件->场景捕获组件2D,之后添加一个骨骼网格体…

CLion 配置 Qt 开发环境

文章目录 CLion 配置 Qt 开发环境环境说明基本配置1. 创建Qt项目2. 设置CLion工具链3. 配置外部工具 一些问题的补充 CLion 配置 Qt 开发环境 环境说明 操作系统:Windows 10 CLion版本:2023.3.4 CMake版本:3.27.7 Qt6版本:6.6…