【C++系列P1】带上这篇基础小宝典,向特性奇多的C++进发吧!勇士们!(持续更新ing~)

news2024/10/7 19:36:19

前言

  • 大家好吖,欢迎来到 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/574464.html

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

相关文章

跨境电商系统源码分享,解决你的电商难题

作为跨境电商领域的专家,我在这里为你分享跨境电商系统源码,帮助你解决各种电商难题!本文将为你提供全面而专业的指导,让你的电商之路更加顺畅。 为什么选择跨境电商系统源码? 跨境电商系统源码是现代电商业务管理的…

MongoDB超全语法大全

MongoDB 安装教程 一、介绍 mongodb数据库是非关系数据库,mongodb中没有表的概念,数据都是存储在集合中 易扩展: NoSQL数据库种类繁多, 但是⼀个共同的特点都是去掉关系数据库的关系型特性。 数据之间⽆关系, 这样就…

如何运行Node.js脚本及读取环境变量

目录 1、如何从CLI 运行Node.js 脚本 2、将字符串作为参数传递到节点,而不是文件路径 3、自动重新启动应用程序 4、如何从Node.js中读取环境变量 1、如何从CLI 运行Node.js 脚本 运行Node.js程序的通常方法是运行全局可用的Node命令(一旦安装Node.js…

[论文分享] When deep learning met code search

When deep learning met code search [ESEC/FSE 2019] Jos Cambronero MIT CSAIL U.S.A. Hongyu Li Facebook, Inc. U.S.A. SeohyunKim Facebook,Inc. U.S.A. KoushikSen EECSDepartment,UCBerkeley U.S.A. SatishChandra Facebook,Inc. U.S.A. 最近有多个关于使用深度神经网…

ASP.NET 未能找到类型或命名空间名称“HttpRequestMessage”

引入System.Net.Http后,运行页面还是报错 using System.Net.Http;chatGPT解释需要安装Microsoft.AspNet.WebApi.Client包,IIS安装的包文件存储在bin目录下,安装包后bin目录多出了一些列文件 运行页面后还是报错 需要在web.config配置文件…

【ISO14229_UDS刷写】-6-$34,$35,$36,$37诊断服务用于downloading下载/uploading上载数据的消息流示例

总目录:(单击下方链接皆可跳转至专栏总目录) 《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014【ISO14229_UDS刷写】-1-$34诊断服务RequestDownload理论部分https://blog.csdn.net/qfmzhu/article…

VM600 CPUR2 机架控制器和通信接口卡

VM600 CPUR2和IOCR2机架控制器和通信接口卡对是一个中央处理器(CPU)卡对,作为Meggitt振动计产品线中VM600机架机械保护系统(MPS)和/或状态监控系统(CMS)的系统控制器和数据通信网关。 注:不同版本的CPUx/IOCx框架控制器和通信接口卡对可用,如下所示: C…

初探 Compose for Wear OS:实现一个简易选择APP

前言 俗话说,人生有三大难题:早上吃啥、中午吃啥、晚上吃啥。 这个问题一度困扰着无数的人,直到一款帮你选择吃什么的神器《今天吃啥》出现,人们再也不用为了每天吃啥而犯愁了。 哈哈,以上纯属抖机灵。 最近访问谷歌…

Spring MVC数据绑定和响应

数据绑定 在程序运行时,Spring MVC接收到客户端的请求后,会根据客户端请求的参数和请求头等数据信息,将参数以特定的方式转换并绑定到处理器的形参中。Spring MVC中将请求消息数据与处理器的形参建立连接的过程就是Spring MVC的数据绑定。 …

电力监控系统在中原科技城智慧能源配电工程中的应用

摘 要:随着社会经济的快速发展,我国变电站正朝着现代化的方向不断发展,自动化设备以及继电保护装置凭借自身优异性能而获得广泛应用。本文介绍的AM5SE系列的微机保护装置,可以针对中原科技城智慧能源配电工程中不同保护对象提供对…

真无线蓝牙耳机什么牌子好?盘点五款质量好的蓝牙耳机

相信很多人都有过这样的经历,早 晚高峰像沙丁鱼般被挤在公交或地铁上,嘈杂的环境、工作的劳累让你只想听听音乐追追剧,给自己一些放松的时光。可拿出有线耳机却常常被挤掉,更有被扯到耳朵的时候。想换一款蓝牙耳机,但面…

Kubernetes 证书详解

K8S 证书介绍 在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 Kube-apiserver 即认为认证通过。下面就主要讲解 TLS 认证。 …

chatgpt赋能python:Python动作捕捉:何为动作捕捉及其应用

Python动作捕捉:何为动作捕捉及其应用 介绍 动作捕捉是一种技术,可将人或物体的运动转换为数字形式。在过去的几十年里,动作捕捉已被广泛应用于电影制作、游戏开发、医学研究等领域。 Python是一种功能强大的编程语言,已成为许…

AI 工具分享第 4 期:13 款国外免费AI视频生成工具

0. 未来百科 未来百科,是一个知名的AI产品导航网站 —— 为发现全球优质AI工具而生 。目前已 聚集全球3000优质AI工具产品 ,旨在帮助用户发现全球最好的AI工具,同时为研发AI垂直应用的创业公司提供展示窗口,迎接未来的AI时代。未来…

Revit建模|Revit风管怎么绘制?

​绘制风管是机电工程重要的一环,对于不少刚接触Revit的小伙伴来说似乎还无从下手,今天就让小编来告诉大家在Revit中绘制风管的方法。 一、在Revit绘制风管 第一步:首先我们先在revit的界面中项目文件找到风管。 第二步:打开后我…

医疗IT系统安科瑞隔离电源装置在医院的应用

【摘要】介绍该三级综合医院采用安科瑞隔离电源系统5件套,使用落地式配电柜安装方式,从而实现将TN系统转化为IT系统,以及系统绝缘情况监测。 【关键词】医用隔离电源系统;IT系统;绝缘情况监测;三级综合医院…

tektronix泰克TDS3054数字荧光示波器

tektronix TDS3054是泰克TDS3000系列示波器,它是一种新的图形界面操作模式,称为QuickMenu。这种快速访问的用户界面使得主要的示波器控制访问一个单一的按键。每一个示波器都包含一个在示波器中运行的在线巡览盘。此磁盘提供了产品的操作和功能的概述。 …

Qt与Excel:从底层原理到上层应用的全面探索

Qt与Excel:从底层原理到上层应用的全面探索 一、Qt与Excel文件的交互基础(Basics of Qt and Excel Interaction)1.1 Qt与Excel文件的基本概念(Basic Concepts of Qt and Excel Files)1.2 Qt读取Excel文件的基本方法&am…

nignx虚拟主机头配置方法

目录 一、不同ip地址访问 二、不同端口访问 三、不同域名访问 一、不同ip地址访问 步骤一:配置虚拟主机头文件 cd /etc/nginx/conf.d/ 新建一个default2.conf touch default2.conf 配置default.cof 配置如下: Listen 192.168.59.137:80; access_log …

自动清理 ES 历史数据

一、 背景 随着业务的增长和时间的变化,ES 数据库的存储空间越来越大,存储数据多数为系统监控日志,保存的数据不需要长期保留,多数情况只需要保留几个月ES数据即可,既可以减轻ES服务器的负载和资源使用率,还…