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

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

前言


大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!(持续更新ing~)

本章主要内容面向刚刚学完C语言,准备或正在接触C++的老铁。而往往C++奇多的小特性和知识点让铁铁们头晕晕脑涨涨,因而本章收纳了许多C++中零散的知识点,相信这篇基础章会帮助铁铁们更好地入门!主要的内容如下啦~

一.缺省函数

运用场景:


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

图示:


(图中的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函数。


相关文章
C++编码规范——日积月累、持续更新
C++编码规范——日积月累、持续更新
269 0
|
7月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
89 1
|
7月前
|
存储 数据安全/隐私保护 C++
【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】
|
7月前
|
C++
C++核心编程三:函数提高(持续更新)
C++核心编程三:函数提高(持续更新)
|
7月前
|
编译器 C++
C++核心编程二:引用(持续更新)
C++核心编程二:引用(持续更新)
|
7月前
|
程序员 编译器 C++
C++核心编程一:内存分区模型(持续更新)
C++核心编程一:内存分区模型(持续更新)
|
7月前
|
C++
C++基础学习:通讯录管理系统(持续更新)
C++基础学习:通讯录管理系统(持续更新)
|
7月前
|
网络协议 关系型数据库 MySQL
[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中
[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中
|
7月前
|
关系型数据库 MySQL C++
[mysql C++ 简单连接到深入] 持续更新中
[mysql C++ 简单连接到深入] 持续更新中
|
编译器 C语言 C++
【C/C++】从 C 到 C++ (持续更新)
从 C语言转到 C++ 需要注意的事项
95 1