freeCodeCamp/guide/chinese/cplusplus/inline-function/index.md

80 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Inline Function
localeTitle: 内联函数
---
# 内联函数
## 介绍
内联函数是一个在C ++中定义的特殊函数,在调用时会内联扩展。
现在,这究竟意味着什么?
每当调用一个函数时,它需要花费很多额外的时间来执行一系列活动,例如跳转到函数,保存寄存器,将参数推入堆栈并返回到调用函数。所以需要很多时间。但内联函数是一种函数,其中已请求编译器执行内联扩展。函数请求编译器在调用函数的每个位置插入函数的完整主体,而不是生成代码以在定义它的一个位置调用函数。
但是,我们无法保证内联声明的每个函数都是内联的。因为当我们将函数声明为`inline` ,它是一个请求,而不是一个命令。在以下情况下,编译器可能会忽略内联请求: - 1如果函数包含循环例如`for`循环, `while`循环, `do-while`循环等。 2如果函数包含`switch`或`goto`语句。 3如果提到返回类型当然不是`void`的话),该功能不返回任何内容。 4如果函数包含静态变量。 5如果函数包含递归调用。
\`\`\`c ++
## 句法 -
内联返回_类型函数_名称argument\_list{
//函数体
}
```
## When to use Inline function
* When the function performs small tasks and is called very often.
* When performance is important.
* Instead of a macro.
```
C ++
# 包括
使用命名空间std;
class MathOperation {
上市:
```
inline int add(int x, int y){
return(x+y);
}
inline float div(int n1, float n2){
return(n1/n2);
}
```
};
int main{
MathOperation obj;
cout <<“Addition is<< obj.add34,12<< <\\ n \\ n“; cout <<“分区是:”<< obj.div12,3.4<<“\\ n”;
返回0;
} \`\`\`
## 内联功能的优点
* 它节省了函数返回调用的开销。
* 它通过利用指令缓存增加了引用的局部性。
* 它通过避免函数调用开销来加速您的程序。
* 当函数调用发生时,它可以节省堆栈上变量推/弹操作的开销。
* 可以将函数定义放在头文件中,即它可以包含在多个编译单元中,而不会让链接器抱怨。
## 内联函数的缺点
* 在标题中使用时,它会使您的头文件更大,其中包含用户不关心的信息。
* 由于代码扩展,它增加了可执行文件的大小。
* C ++内联在编译时解析。这意味着如果更改内联函数的代码, 您需要使用它重新编译所有代码以确保它将被更新。
* 如上所述,它增加了可执行文件的大小,这可能会导致内存中的颠簸。 更多页面错误,降低程序性能。