可以举个例子说明内联函数与常规函数的区别:比如我们去吃饭,常规函数代码本身消耗时间并不长,时间主要浪费在了去跳转执行代码的路上,就好像吃饭花了10分钟,来回路上各花了1个小时一样。
内联函数就是在每个需要调用的地方复制一个副本一样,所以每调用一次就多一个副本,造成空间的大量使用。
二者比较,常规函数是节省空间,但是效率稍低;内联函数是效率高,但是占用内存。
那么如何选择性的去使用二者呢?那就要看执行函数代码的时间(也就是上面所说的吃饭)和处理函数调用机制的时间(也就是上面所说的路长)了。
内联函数如何进行处理在上文说过了。
注意一下内联函数不能是递归,代码量也不能太大。
2.内联函数与宏
预处理语句#define来提供宏,但是它与内联函数有一个巨大的区别就是:举例
- #define SQUARE(X) X*X
- inline double square(double x) {return x * x}
-
- 当这么使用的时候:
- a = SQUARE(3.5 + 4.5);//实际是这么计算的a = 3.5 + 4.5 * 3.5 + 4.5;
-
- 但是内联函数不一样,就是先求和再乘,这么说能够理解吧
这是由于宏不是按值传递的,内联函数是按值传递的。
3.引用变量
引用是已定义的变量的别名(另一种名称,可以理解为外号)。引用变量的主要用途是用作函数的形参。通过将引用变量用作参数,函数将使用其原始数据,而不是副本。是不是和指针有点类似。
可以看下这篇的4。
C++学习第二十四天----函数_The Kite的博客-CSDN博客