这篇文章主要给大家介绍了关于C++知识点之inline函数、回调函数和普通函数的相关使用方法,以及回调函数和普通函数的区别小结,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

一、inline内联函数#

特征

  • 相当于把内联函数里面的内容写在调用内联函数处;
  • 相当于不用执行进入函数的步骤,直接执行函数体;
  • 相当于宏,却比宏多了类型检查,真正具有函数特性;
  • 编译器一般不内联包含循环、递归、switch 等复杂操作的内联函数;
  • 在类声明中定义的函数,除了虚函数的其他函数都会自动隐式地当成内联函数;
  • 内联关键字是在编译时建议编译器内联,是不是内联函数取决于编译器,一个好的编译器将会根据函数的定义体,自动地取消不值得的内联(是否内联:1、可以通过多次调用函数,查看执行文件大小,如果变大了,就证明是内联函数;2、通过反汇编查看数据)。

1.1 使用#

  • inline是一种“用于实现的关键字”,而不是一种“用于声明的关键字”,也就是说,如果只在生命中使用inline是没有用的,若要成为inline函数必须在定义函数的时候添加该关键字。在声明中加不加inline关键字都没关系,但是为了阅读方便,还是建议声明和定义都加上;
  • C++在类中定义函数的时候,当函数不包含循环、递归、switch 等复杂操作时,编译器会进行隐式内联。
  • C++在类外定义函数,因为与非inline函数不同:inline函数对编译器而言必须是可见的,以便它能够在调用点展开该函数,inline函数必须在调用该函数的每个文本文件中定义。所以内联函数的声明和定义建议都放在同一个头文件,这样另一个.cpp文件#include该头文件的时候,就把该内联函数的定义也包含进来了,这就可以正常使用内联函数了。

声明


// 声明1(加 inline,建议使用)
inline int functionName(int first, int second,...);

定义


// 定义
inline int functionName(int first, int second,...) {/****