1.C++内联函数
C++中函数分为常规函数和内联函数。
常规函数
常规函数调用时,操作系统会先执行调用函数之前的指令(按一定顺序放在一块内存中),然后再跳转到储存函数中指令的地址处执行函数指令,并在执行完成后跳回至原指令处。
也就是说常规函数调用时需要来回跳跃并记录跳跃位置,需要一定的算力开销。
内联函数
内联函数调用时,会先将函数指令拷贝添加至调用函数的相应位置,再与调用函数之前的指令按顺序统一执行。
也就是说内联函数调用时会拷贝自己的副本,执行速度稍快,但会占用更多内存。
要使用内联函数特性,必须采取以下措施之一:
- 在函数声明前加上关键字 inline
- 在函数定义前加上关键字 inline
通常的做法是省略原型,将整个定义(即函数头和所有函数代码)放在本应提供函数原型的地方。
程序员请求将函数作为内联函数时,编译器并不一定会满足这种要求。它可能认为该函数过大或注意到函数调用了自己(内联函数不能递归),因此不将其作为内联函数。
#include <bits/stdc++.h>
using namespace std;
//内联函数定义,不一定非要放在一行中,但内联函数仅适合短小的函数。
inline double square(double x) { return x * x; } //将给定数据平方
int main()
{
double x = 2;
cout << square(x) << "\t" << square(square(x)) << "\t" << square(square(square(x))) << endl;
return 0;
}
引用变量
引用变量是C++新增的一种复合类型。引用时已定义变量的别名。
创建引用变量
int rats;
int &rodents = rats; //使rodents成为rats变量的一个别名
其中,& 不是地址运算符,而是类型标识符的一部分(引用变量类型)。上述引用声明使得 rats 与 rodents 指向相同的值和内存单元。
注意:必须在声明引用变量时进行初始化。进而使引用更接近于 const 指针。
将引用用作函数参数
这种传参方式称为按引用传递。按引用传递允许被调用的函数访问调用函数中的变量。