手记

C++之内联函数

介绍
内联函数一般在代码中用inline修饰,当一个函数被声明为内联函数,编译器将使用相应的函数代码替换函数调用,程序无序跳到另外一个位置执行代码,运行速度比常规函数快,但是占用了更多的内存,如果程序在10个不同的地方调用同一个内联函数,该程序将包含该函数的10个副本。
普通函数
就是函数声明或者定义前加上inline使其成为内联函数
成员函数
在类中定义的成员函数默认是内联的,可以显示加上inline,或者不加。
和宏的区别:

  1. 内联函数在编译时展开,宏在预编译时展开
  2. 内联函数是直接嵌入到目标程序中,宏是简单的文本替换
  3. 内联函数是一个函数,有类型检测,语法判断,而宏没有

以下情况不宜使用:

  1. 函数体内的代码长,将消耗很多内存,因为要创建副本
  2. 函数体内有循环,函数执行时间比函数调用开销大

构造函数、析构函数和虚函数能否声明为内联函数
构造和析构函数:将构造函数和析构函数声明为inline是没有什么意义的,即编译器并不真正对声明为inline的构造和析构函数进行内联操作,因为编译器会在构造和析构函数中添加额外的操作(申请/释放内存,构造/析构对象等),致使构造函数/析构函数并不像看上去的那么精简。其次,class中的函数默认是inline型的,编译器也只是有选择性的inline,将构造函数和析构函数声明为内联函数是没有什么意义的。
虚函数:当是指向派生类的指针(多态性)调用声明为inline的虚函数时,不会内联展开;当是对象本身调用虚函数时,会内联展开,当然前提依然是函数并不复杂的情况下。

参考:<<C++primer plus>>
<<王道程序员求职宝典>>
https://www.cnblogs.com/helloweworld/archive/2013/06/14/3136705.html
————————————————
版权声明:本文为CSDN博主「小面包爱我」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44559016/article/details/117151241

0人推荐
随时随地看视频
慕课网APP