c++中的内联函数inline

Posted fanhua666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中的内联函数inline相关的知识,希望对你有一定的参考价值。

文章链接:

问题描述:类中成员函数缺省默认是内联的,如果在类定义时就在类内给出函数定义,那当然最好。如果在类中未给出成员函数定义,而又想内联该函数的话,那在类外要加上 inline,否则就认为不是内联的。内联函数的inline要加在函数前面,不可以加在声明前面。

技术图片
 1 class A
 2 
 3     public:void Foo(int x, int y)    // 自动地成为内联函数
 4 
 5 //正确写法:
 6 // 头文件
 7 class A
 8 
 9     public:
10     void Foo(int x, int y);
11 
12 // 定义文件
13 inline void A::Foo(int x, int y) 
14 
15 //错误写法:
16 inline void Foo(int x, int y); // inline 仅与函数声明放在一起
17 void Foo(int x, int y)
View Code

1. 内联函数作用:为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。

例子:

技术图片
 1 #include <stdio.h>
 2 //函数定义为inline即:内联函数
 3 inline char* dbtest(int a) 
 4     return (i % 2 > 0) ? "" : "";
 5  
 6  
 7 int main()
 8 
 9    int i = 0;
10    for (i=1; i < 100; i++) 
11        printf("i:%d    奇偶性:%s /n", i, dbtest(i));    
12    
13 
View Code

 内联函数是在程序编译的时候替换的方式加入程序中的。

2. 内联函数使用的限制:

inline 的使用是有所限制的,inline 只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如 while、switch,并且不能内联函数本身不能是直接递归函数(即,自己内部还调用自己的函数)。

代码较长,内部出现循环不适合使用内联函数。

3. 内联函数只是一个对编译器的建议,具体实不实现看编译器认为函数复不复杂。

4.内联函数最好放在头文件中。

 

以上是关于c++中的内联函数inline的主要内容,如果未能解决你的问题,请参考以下文章

关于C++内联函数

C++基础语法梳理:inline 内联函数!虚函数可以是内联函数吗?

inline内联函数

内联函数分析

c++: inline_函数与内联函数(超详细)

C++ inline内联函数详解