C++学习笔记(二):内联函数inline
2017-07-31 15:25
543 查看
一般来说,当我们定义一个函数以后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行。假如对该函数执行了100次调用,那么程序就要来回跳转100次,显然这是相当影响程序执行效率的。
C++使用inline将函数声明为内联函数。
这样编译器将不会创建真正的函数,而只是将这个内联函数的所有代码拷贝到调用函数中,这样程序在执行调用该函数时就不需要来回跳转,自然就会提高程序的运行效率。
但是任何事情都有两面性,使用内联函数再提高效率的同时,程序的体积会增加。例如:程序调用内联函数100次,那么内联函数中的代码将被复制100次,是程序的体积增加。
虽然内联函数对增加程序的体积,但是,当函数很小的时候,即使复制很多次,函数的体积增加也不会增加很多。这时候,使用内联函数是很划算的。例如:
我们也可以将类的成员函数定义为内联函数。类的成员函数定义为内联函数有两种方式。一:使用inline将成员函数再类内声明为内联函数,并在类外给出函数定义;二:在类内,同时对成员函数进行声明和定义。下面来看一个简单的例子
注意:在不知道具体怎么做时最好先不要使用内联函数,等程序完成大部分时再对符合要求的函数进行内联操作。
最后,需要指出的是,内联函数只适用于短小的函数,否则程序的体积将会大大增加。
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函数的作用是返回x int 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; }
注意:在不知道具体怎么做时最好先不要使用内联函数,等程序完成大部分时再对符合要求的函数进行内联操作。
最后,需要指出的是,内联函数只适用于短小的函数,否则程序的体积将会大大增加。
相关文章推荐
- c++ 学习笔记 ----内联函数(inline)
- 【C++】学习笔记草稿版系列5(内联函数)
- C++ 学习笔记(6)函数、局部静态对象、重载函数、内联函数、constexpr函数、调试帮助、函数匹配、函数指针
- C++学习笔记15——局部对象与内联函数
- [C++学习笔记]--内联函数、函数重载、函数defualt参数
- C++学习笔记(十)-- inline
- c++学习笔记(2)类的声名与实现的分离及内联函数
- 【菜鸟C++学习笔记】11.内联函数与const成员函数
- C/C++学习笔记10:内联函数
- c++学习笔记 -- 内联函数
- C++基础学习笔记----第三课(内联函数、默认参数、占位参数)
- C++学习笔记之——内联函数,引用
- C++学习笔记之——引用 内联函数
- [C++ Primer Plus]学习笔记--C++内联函数
- C++学习笔记5——内联函数分析
- C++中内联函数的使用学习笔记
- 高质量C++第七章内存管理学习笔记
- C++ 学习笔记(9)顺序容器、容器适配器
- C++学习笔记 C和C++中的const关键字
- 【C++数据结构学习笔记---线性表】带头结点的双向循环链表