朋友们好,欢迎来到本期博文 !本期接着上一期继续讲解 !
1. 传值,引用效率比较
----> 二者做参数入函数
----> 二者做返回值出函数
以上,有些代码 !目前属于超纲的 !看不懂没关系,以后会详细讲解的 !比如, “大类A”,结构体自成一个类 !
由于,以值作为参数或返回值类型,在传参和返回期间,函数不会直接传递实参或将变量本身直接返回,而是传递实参或者返回变量的一份临时的拷贝 !因此,用值作为参数或返回值类型,效率是非常低下的,尤其是当参数或返回值类型很大时,效率就更低了 !
引用的知识点,已经涵盖完成了 !其实,从另一个角度来看,引用 是指针的加强版与升级版 !
然而,二者在用法上,特性上,还是有很大不同的 !
----> 总结 :
a. 引用在感念上定义一个变量的别名,指针存储一个变量的地址 ;
b. 引用在定义时必须初始化,指针没有要求;
c. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体;
d. 没有 NULL 引用,但有 NULL 指针;
e. 在 sizeof 中含义不同 :引用只作引用类型的大小,但 指针始终都是地址空间所占据字节个数(32位平台下占据4个字节)
f. 引用自增 即是 引用的实体增加 1;指针自增 即是 指针向后偏移一个类型的大小 !
各位好友,关于引用的讲述已经完工! 下面开启,新的“战斗” !😊
2. 内联函数
做项目开发的时候,可能会出现同一个函数被频繁调用的现象 !这时候,频繁使用的函数会不断地建立栈区,内存会被逐渐拉满 !致使程序运行变得越来越缓慢 !于是,C++ 引入了 内联函数来解决这个问题 !
什么是内联函数 ?
-----> 以 inline 修饰的函数叫做内联函数 !编译时 C++ 编译器会在调用内联函数的地方展开,再不会出现该函数建立栈区的现象 !从而内联函数提高了程序运行的效率 !
那么该如何更好地展现 内联函数的使用情况呢 !请看下列图示 :>
注意观察,上述标注的地方 ! 还有一处在最开头的位置 ---> “int” 类型之前,加上了 “inline”,
此时Add()函数就变成了内联函数了 !如右侧图示,是在调试过程中,反汇编的具体情况。
玫瑰红色框内 是表明调用内联函数成功,标志是 “call Add” 字样的出现 !此时程序运行此处,是以调用函数体,来取代了栈区的建立 !
虽然,内联函数在提高程序运行效率上,具有很大的优势 !但是,内联函数的这种做法,确是 用空间来换取时间
在编译阶段,会用函数体来替换函数调用 !至于缺陷是,会使得目标文件不断变大;而优势是,少了调用开销,提高了程序运行效率 。
上述话语中,“使得目标文件变大” 是什么意思?
-----> 随着内联函数的重复使用,所用到的指令(即 反汇编 那一块儿的指令),会变得越来越多 !(会累积)
一般而言,编译器会将函数规模较小,不是递归,频繁使用的函数采用 inline 修饰 !否则编译器会忽略 inline 特性 !
以上就是本期的全部内容了!至此, C++ 入门环节,正式告一段落 !接下来,开始转战 “类,对象” !
其实,到了 “类,对象”,C++才算是真正有了味道 !😊😊
啊😊 明天,就是 五一了 !衷心祝愿,所有好友,假期快乐 !!😊😊 学习,工作两不误 !!👍🌹