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

​​​​​​​

前言

  • 大家好吖,欢迎来到 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函数。

猜你喜欢

转载自blog.csdn.net/YYDsis/article/details/130894683