首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
30 篇文章
1
《挑战30天C++入门极限》C++的iostream标准库介绍(1)
2
《挑战30天C++入门极限》C++的iostream标准库介绍(2)
3
《挑战30天C++入门极限》C++的iostream标准库介绍(3)
4
《挑战30天C++入门极限》C++运算符重载赋值运算符
5
《挑战30天C++入门极限》C++运算符重载函数基础及其值返回状态
6
《挑战30天C++入门极限》对C++递增(增量)运算符重载的思考
7
《挑战30天C++入门极限》类的分解,抽象类与纯虚函数的需要性
8
《挑战30天C++入门极限》C++中利用构造函数与无名对象简化运算符重载函数
9
《挑战30天C++入门极限》C++中类的多态与虚函数的使用
10
《挑战30天C++入门极限》C++运算符重载转换运算符
11
《挑战30天C++入门极限》图例实解:C++中类的继承特性
12
《挑战30天C++入门极限》C++类的继承与多重继承的访问控制
13
《挑战30天C++入门极限》图文例解C++类的多重继承与虚拟继承
14
《挑战30天C++入门极限》理解C++面向对象程序设计中的抽象理论
15
《挑战30天C++入门极限》C++面向对象编程入门:构造函数与析构函数
16
《挑战30天C++入门极限》C++类对象的复制-拷贝构造函数
17
《挑战30天C++入门极限》C++类静态数据成员与类静态成员函数
18
《挑战30天C++入门极限》入门教程:实例详解C++友元
19
《挑战30天C++入门极限》C++面向对象编程入门:类(class)
20
《挑战30天C++入门极限》新手入门:C++中的函数重载
21
《挑战30天C++入门极限》新手入门:C/C++中的结构体
22
《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy
23
《挑战30天C++入门极限》新手入门:C++中堆内存(heap)的概念和操作方法
24
《挑战30天C++入门极限》C/C++中字符指针数组及指向指针的指针的含义
25
《挑战30天C++入门极限》C/C++中结构体(struct)知识点强化
26
《挑战30天C++入门极限》新手入门:关于C++中的内联函数(inline)
27
《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)
28
《挑战30天C++入门极限》新手入门:C++中布尔类型
29
《挑战30天C++入门极限》新手入门:C/C++中数组和指针类型的关系
30
《挑战30天C++入门极限》新手入门:C++下的引用类型

《挑战30天C++入门极限》新手入门:关于C++中的内联函数(inline)

代码语言:javascript
复制

新手入门:关于C++中的内联函数(inline) 

  在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 

  可能说到这里,很多人还不明白什么是栈空间,其实iostream>  

#include <string>  
using namespace std;  
  
inline string dbtest(int a); //函数原形声明为inline即:内联函数  
  

  
void main()  
{  

    for (int i=1;i<=10;i++)  
    {  
        cout << i << ":" << dbtest(i) << endl;  

    }  
    cin.get();  
  
}  
  

string dbtest(int a)//这里不用再次inline,当然加上inline也是不会出错的  
{  
    return (a%2>0)?"奇":"偶";  
  
}

  上面的例子就是标准的内联函数的用法,使用inline修饰带来的好处我们表面看不出来,其实在内部的工作就是在每个for循环的内部所有调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。 


  说到这里很多人可能会问,既然inline这么好,还不如把所谓的函数都声明成inline,嗯,这个问题是要注意的,inline的使用是有所限制的,inline只适合函数体内代码简单的函数使用,不能包含复杂的结构控制语句例如while 
switch,并且不能内联函数本身不能是直接递归函数(自己内部还调用自己的函数)。 

  说到这里我们不得不说一下在c语言中广泛被使用的#define语句,是的define的确也可以做到inline的这些工作,但是define是会产生副作用的,尤其是不同类型参数所导致的错误,由此可见inline有更强的约束性和能够让编译器检查出更多错误的特性,在c++中是不推荐使用define的。

  关于内联函数的更多例子我就不一一举出了,灵活的使用也多靠学习者本身,我只在此抛砖引玉,让大家尽可能多的学习到c++中的一些新的先进的特性知识点。

下一篇
举报
领券