C++学习笔记(二):内联函数inline
来源:互联网 发布:如何编译linux源码 编辑:程序博客网 时间:2024/05/18 01:34
一般来说,当我们定义一个函数以后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行。假如对该函数执行了100次调用,那么程序就要来回跳转100次,显然这是相当影响程序执行效率的。
C++使用inline将函数声明为内联函数。
inline int func(int); // 将func函数声明为内联函
这样编译器将不会创建真正的函数,而只是将这个内联函数的所有代码拷贝到调用函数中,这样程序在执行调用该函数时就不需要来回跳转,自然就会提高程序的运行效率。
但是任何事情都有两面性,使用内联函数再提高效率的同时,程序的体积会增加。例如:程序调用内联函数100次,那么内联函数中的代码将被复制100次,是程序的体积增加。
虽然内联函数对增加程序的体积,但是,当函数很小的时候,即使复制很多次,函数的体积增加也不会增加很多。这时候,使用内联函数是很划算的。例如:
#include<iostream>using namespace std;inline int func(int); // 将func函数声明为内联函数int func(int x){return x;} // func函数的作用是返回xint main(){int x;cout<<"请输入一个数字:\n";cin>>x;cout<<endl;cout<<"输入的数字为:"<<func(x)<<endl;// 由于func函数声明为内联函数,此句语句等同于// cout<<"输入的数字为:"<<return x;<<endl;// 这样,程序就不用跳转到func函数,再跳转回来,程序运行速度度提升return 0;}
我们也可以将类的成员函数定义为内联函数。类的成员函数定义为内联函数有两种方式。一:使用inline将成员函数再类内声明为内联函数,并在类外给出函数定义;二:在类内,同时对成员函数进行声明和定义。下面来看一个简单的例子
#include<iostream>using namespace std;class A{public: inline void func(int); // 使用inline将func函数声明为内联函数 int get(){return x;} // 在类中,成员函数的声明和定义放在一起,get也是内联函数private: int x;};void A::func(int a){x=a;} int main(){ A a; int x; cout<<"请输入一个数字:\n"; cin>>x; a.func(x); cout<<endl; cout<<"输入的数字为:"<<a.get()<<endl; return 0;}
注意:在不知道具体怎么做时最好先不要使用内联函数,等程序完成大部分时再对符合要求的函数进行内联操作。
最后,需要指出的是,内联函数只适用于短小的函数,否则程序的体积将会大大增加。
阅读全文
2 0
- C++学习笔记(二):内联函数inline
- c++ 学习笔记 ----内联函数(inline)
- 学习笔记(一):inline内联函数
- c++-inline 内联函数
- 【C++】内联函数,inline
- c++inline内联函数
- C++回忆录:(二)inline内联函数
- 【C++】:C++之内联函数(inline)
- 内联函数(inline)
- 内联函数(inline)
- 内联函数(inline)
- inline(内联)函数
- C/C++内联函数(inline)
- C语言内联函数inline
- VS2010 C++ 学习笔记(一) 引用 函数参数默认值 函数重载 内联inline
- 内联函数(inline function)
- C++内联(inline)函数
- inline function(内联函数)
- 微信小程序-问题:未找到入口 app.json 文件
- Oracle杀死死锁
- Java实现RC4加密算法、RSA算法、MD5算法
- jquery serializeobject();方法序列化表单的属性,返回字符串。
- Socket通信,简单的用两个手机实现TCPIP
- C++学习笔记(二):内联函数inline
- 人工智能之机器学习算法体系汇总
- 换钱的方法数
- 如何找出数列中符合条件的数对的个数
- 268. Missing Number
- 简单 Shell 脚本随手录
- easyui设置datebox默认当前日期,且只能选择当前日期之前的日期
- mongoose中connect()、createConnection()和connection的区别和作用
- javascript学习笔记:BOM对象(存疑)