- 9
- 0
- 约2.9千字
- 约 13页
- 2019-02-22 发布于安徽
- 举报
内联函数 在C++中,函数调用需要建立栈空间,进行参数复制,保护调用现场,返回时,还要进行返回值复制,恢复调用现场。 这些工作都是与完成特定任务的操作无关的额外开销。程序效率由于这项工作而受到影响。 函数调用需要一些时间和空间方面的开销;对于较长的函数这种开销可以忽略不计,但是对于一些函数体代码很短,但又被频繁地调用的函数,就不能忽视这种开销。引入内联函数正是为了解决这个问题,提高程序的运行效率。 内联函数声明和定义 内联函数的几点限制 (1)函数体内不能出现复杂的结构语句,例如switch和while等。如果出现了上述语句,则内联定义无效,仍视为一般函数。 (2)递归函数不能定义成内联函数。 (3)内联函数一般适用于小函数(含1—5行代码)。 double Average(double total, int number) { return total/number; } 定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的开销,会对应用程序的性能有损失。例如,Average在一个循环语句中重复调用几千次,会降低程序的执行效率。 那么,有办法避免函数调用的开销吗?对于上面的函数,我么可以把它定义为内联函数的形式:
原创力文档

文档评论(0)