C++inline的初步研究

2018-09-14  本文已影响5人  狗子孙

C++的inline函数在编译阶段会被替换成函数体中的内容,与宏定义不同的时,宏定义是单纯的字面替换,无法检验语法错误,无法操作类的私有成员,不能调试,并且经常存在结合性的问题。内联函数的几个常见注意点:

  1. 内联函数必须在定义的时候使用,单纯声明无意义。
  2. 类成员函数若直接在类的声明中写实现体,则也是内联的,但编译器会根据它的实现决定到底是不是内联的。
  3. 引用其他文件中的内联函数,要在头文件中定义,不能光在头文件中声明,因为编译器对内联函数首先做替换操作,而非调用操作。当然直接在使用内联函数的源文件中定义内联函数也是可以的。
  4. 在头文件中修改了inline函数,则所有引用此头文件的源文件都要重新编译。

内联函数的优点是减少函数调用时的时间和空间开销(函数调用需要将当前变量存放在栈中,可能的拷贝操作等),缺点是增加了代码体积。所以当函数体本身不大,不包含循环或其它复杂逻辑时,可以考虑使用内联函数。

上一篇 下一篇

猜你喜欢

热点阅读