【C++系列P1】带上这篇基础小宝典,进发C++!(持续更新ing~)

news2024/11/26 19:35:39

​​​​​​​

前言

  • 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!(持续更新ing~)
  • 本章主要内容面向刚刚学完C语言,准备或正在接触C++的老铁。而往往C++奇多的小特性和知识点让铁铁们头晕晕脑涨涨,因而本章收纳了许多C++中零散的知识点,相信这篇基础章会帮助铁铁们更好地入门!主要的内容如下啦~

目录

一.缺省函数

二.命名空间域

三.访问限定符(C++实现封装的方式)

四. C++中的NULL与空指针区别

五.函数重载

六. 内联函数

1.内敛函数适用“短小,使用频繁的函数”

2.内敛函数的缺陷/特点 

3.内联函数声明和定义必须要放在一起的原因  


一.缺省函数

运用场景:

  • 例:在通讯录项目时,可以省去初始化函数,通过参数的变化可以选择实现初始化/增删查改。

图示:

  • (图中的StackInit函数就是缺省函数,当我们传入栈的地址时且没有传入第二个参数时,它会默认传入另一个参数4)

(小声说:图有点小糊...保证就这张!)

注意事项:

  • 只有参数的后部参数才是可以缺省,即缺省函数参数后不可以再跟正常参数

缺省函数的定义和声明:

  • 缺省函数只能放在函数声明——编译器必须在使用函数之前知道缺省值 

二.命名空间域

引入:在实际运用代码的过程中,可能存在局部变量之间命名冲突/库与局部变量命名之间相互冲突的情况,因而我们可以在局部域全局域之外设置一个区域:命名空间域要使用时通过 a)展开命名空间域 / b)指定访问命名空间域 来实现。

程序在编译时的优先顺序:局部域->全局域->展开的命名空间域 

 图示:


三.访问限定符(C++实现封装的方式)

引入:如小标题所示,我们知道访问限定符是C++实现封装的方式,但是什么是封装呢?

封装本质上属于一种管理。例:计算机设计中的开机键,usb插口等等,让用户通过这些和计算机交互。而实际工作的是硬件元件。

  在C++中实现封装,可以通过类和操作数据的方法进行结合,通过访问权限(访问限定符)来隐藏对象内部实现细节,控制哪些方法可以在类外部直接被使用

访问限定符的分类:

访问限定符说明:


四. C++中的NULL与空指针区别

  • 在C++中,NULL表示“ 0 ”, 实际是一个宏。
  • 在C++中要表示 空指针,使用 nullptr

图示:


五.函数重载

【函数重载】

  • 是函数的一种特殊情况,C++允许在同一作用域中声名几个功能类似的同名函数显著特征:这些同名函数的形参列表(个数,类型,类型顺序)不同

注意点:对  返回值  没有要求 ,注意声明!(例:缺省函数)

图示:(注意函数声明时,是否存在缺省函数)StackInit

  • 图中StackPush为函数重载


六. 内联函数


1.内敛函数适用“短小,使用频繁的函数”

  •  当实现加法功能时,需要频繁调用加法函数,调用函数的过程中包含着频繁地开辟栈帧空间和关闭空间,会让程序运行速度变低。而解决类似问题可以使用“宏函数”,但是宏函数面临——易出错(需要括号确保直接替换后不受影响)。在这时使用内联函数不会频繁开辟空间,大大提高了程序的运行速度顶中顶有没有!!但别急,它也还有缺点呢~

2.内敛函数的缺陷/特点 

  • 内联函数的本质是通过牺牲空间换时间,运用内联函数程序的运行速度大大提升;但于此同时程序的大小也会急剧增大。因此面对一些逻辑稍微复杂的运算(循环/递归)便会大大造成冗余。
  • inline对于编译器也仅仅是一个建议最终是否成为inline,编译器自己会判断。
  • 且默认debug状态下,inline不会起作用。

3.内联函数声明和定义必须要放在一起的原因  

  • 编译器一旦把某个函数作为内联函数处理,就会在其调用的位置展开,即该函数没有地址,源文件编译后不会形成符号表,没有链接冲突。同时也不能在其他源文件中调用,故一般都是直接在源文件中定义内联函数——可以在同一个项目不同的源文件中定义函数名相同但实现不同的inline函数。

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

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

相关文章

为什么北欧的顶级程序员数量远超中国?(续)

之前写过一篇文章《为什么北欧的顶级程序员数量远超中国?》,讲了北欧大神们开发的Linux、MySQL、Chrome V8、MineCraft、QT等优秀软件,分析了北欧有如此多顶级程序员的主要原因。 有位读者Ven 源 留言说,除了文章中教育优势&…

碳纤维单丝外径测试中的纳米分辨率激光衍射法解决方案

摘要:碳纤维单丝热膨胀系数是碳纤维复合材料设计、生产与可靠性和寿命评估的重要参数,本文针对单丝径向高温热膨胀系数测试这一难题提出了相应的解决方案。解决方案的核心内容是基于激光衍射法和高温辐射加热,并采用衍射轮廓拟合技术以及相应…

Dropout层的个人理解和具体使用

Dropout层的作用 dropout 能够避免过拟合,我们往往会在全连接层这类参数比较多的层中使用dropout;在训练包含dropout层的神经网络中,每个批次的训练数据都是随机选择,实质是训练了多个子神经网络,因为在不同的子网络中…

Linux常用命令——gzip命令

在线Linux命令查询工具 gzip 用来压缩文件 补充说明 gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好…

Python过滤信息,如省位中包含广东、安徽、浙江这3个省份的话,就pass,怎么破?...

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 但令心似金钿坚,天上人间会相见。 大家好,我是皮皮。 一、前言 前几天遇到了一个小问题,在做资料的时候&#xff0c…

7位专家齐聚openGauss Developer Day 2023云和恩墨专题论坛,共论数据库自主创新改造与技术发展...

5月26日,云和恩墨在「openGauss Developer Day 2023」主论坛上大放异彩(←点此回顾主论坛精彩时刻),更是通过举办一场数据库技术创新与应用实践分论坛,力邀7位重量级嘉宾就数据库创新能力构建、行业应用实践和迁移替代…

SpringBoot配置文件的注入和读取

目录 1. 配置文件的作用 2. 两种配置文件的格式: 2.1 properties 基本语法: 2.1.1 写入 2.1.2 读取 执行原理 2.1.3 缺点分析 2.2 yml 基本语法: 2.2.1 写入(非对象) 2.2.3 配置对象 2.2.4 配置集合 多个配…

【Linux初阶】基础IO - 文件管理(深入理解文件描述符) | 重定向

文章目录 一、文件管理引入二、理解文件描述符三、文件描述符表四、文件描述符的分配规则五、重定向六、使用 dup2 系统调用实现重定向1.模拟实现 >&#xff08;输出&#xff09;2.模拟实现 >>&#xff08;追加&#xff09;3.模拟实现 <&#xff08;输入&#xff0…

【观察】浪潮信息:自研液环式真空CDU技术,将被动应对变为主动防御

毫无疑问&#xff0c;在“双碳”战略的大环境下&#xff0c;数据中心走向绿色低碳和可持续发展已成为“不可逆”的大趋势&#xff0c;特别是随着全国一体化大数据中心、新型数据中心等政策文件的出台、“东数西算”工程的正式启动&#xff0c;数据中心的建设规模和数量呈现出快…

老胡周刊QA微信机器人(基于ChatGPT)

背景 先做个介绍吧&#xff0c;老胡的信息周刊是我从2021-08-16创立的周刊&#xff0c;截止到目前(2023-05-29)将近两年时间&#xff0c;目前已经有92期周刊&#xff0c;中间基本没有断更过&#xff0c;一共发布资源统计如下&#xff1a; &#x1f3af; 项目 288&#x1f916; …

Ae:稳定运动

使用跟踪器 Tracker面板的稳定运动 Stabilize Motion功能&#xff0c;可通过手动添加和设置跟踪点来跟踪对象的运动&#xff0c;将获得的跟踪数据对图层本身进行反向变换&#xff0c;从而达到稳定画面的目的。 Ae菜单&#xff1a;窗口/跟踪器 Tracker 点击跟踪器面板上的“稳定…

长文教你如何正确使用ChatGPT提高学习效率!

最近 Chat GPT 很&#x1f525;&#xff0c;被大家评为无所不能的最强AI。据说&#xff0c;有百分之八十的留学生已经在用ChatGPT 来写作业了&#xff0c;因为ChatGPT真的是有问必答&#xff0c;光速回复&#xff0c;复制粘贴都没有它回答的快。 目录 Part.1 什么是ChatGPT&a…

驱动开发:内核读写内存浮点数

如前所述&#xff0c;在前几章内容中笔者简单介绍了内存读写的基本实现方式&#xff0c;这其中包括了CR3切换读写&#xff0c;MDL映射读写&#xff0c;内存拷贝读写&#xff0c;本章将在如前所述的读写函数进一步封装&#xff0c;并以此来实现驱动读写内存浮点数的目的。内存浮…

centos安装KVM

文章目录 一、centos安装KVM步骤 1. 检查硬件支持 2. 安装 KVM 相关软件包 3. 启动 libvirtd 服务 4. 设置 libvirtd 服务自启动 5. 验证 KVM 安装 二、出现问题的解决方法 1. 检查网络连接 2. 检查 DNS 解析 3. 检查软件源设置 4. 禁用 IPv6 前言 本篇主要介绍cen…

教育最大的失败,是普通家庭富养孩子

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 著名教育家马卡连柯曾说&#xff1a;“一切都给孩子&#xff0c;牺牲一切&#xff0c;甚至牺牲自己的幸福&#xff0c;这是父母给孩子最可怕的礼物。”前些天刷到一个挺扎心的视频&#xff0c;不知道算…

商业智能 (BI) 对企业中每个员工的 5 大好处

本文由葡萄城技术团队于博客园原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 众所周知&#xff0c;商业智能 (BI) 是探索企业数据价值的强大工具&#xff0c;能够帮助企业做出明智…

全网最全2W字-基于Java+SpringBoot+Vue+Element实现小区生活保障系统(建议收藏)

博主介绍&#xff1a;✌全网粉丝30W,CSDN特邀作者、博客专家、新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推…

破局35岁危机:技术人如何做好职业规划?

见字如面&#xff0c;我是军哥。 最近有一位读者工作 8 年了&#xff0c;后端做了 3 年&#xff0c;算法做了 5 年&#xff0c;换了 6/7 家公司&#xff0c;基本上每一家公司只干 1 年左右&#xff0c;换了 N 个行业&#xff0c;现在工作出现瓶颈&#xff0c;也不知道未来的路怎…

十、Git代码仓库

一、Git概述 Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 二、Git常用命令 查看git配置 git config -l设置用户名和邮箱 git config --global u…

带电更换柱上变压器(综合不停电作业法)

一、现场复勘 1.核对工作线路双重名称、杆号及设备双重名称 2.检查杆身质量 3.检查线路装置是否符合带电作业要求 4.检查待更换变压器容量 满足旁路作业要求 5.检查气象条件 作业前进行湿度和风速的测量&#xff0c;风力大于5级或湿度大于80%时&#xff0c;不宜带电作业&…