【C/C++】inline内联函数详解

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡><)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
c++系列专栏:C/C++零基础到精通

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

c语言内容:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


目录

  • 一、inline内联函数的定义
  • 二、内联函数与宏替换比较
  • 三、内联函数的适用情景

一、inline内联函数的定义

内联函数在C++中是一种特殊的函数,内联函数的代码在编译时会在调用的位置展开,而不是在运行时调用函数。

这样做可以消除函数调用的开销,从而提高程序的执行效率。

相当于define宏替换

内联函数可以分为:

  • 隐式内联函数:类内的函数(虚函数除外)都为隐式内联函数
  • 显式内联函数:在类外使用inline关键字修饰的函数

把函数体也写在类内就是内联函数,只声明不是

#include 

class Test
{
public:
	void fun() 
	{ 
		std::cout << "隐式内联函数 Test::fun()" << std::endl; 
	};
	void fun2();
};

inline void Test::fun2()
{ 
	std::cout << "显式内联函数 inline void Test::fun2() " << std::endl; 
};

int main()
{
	Test t;
	
	t.fun();
	t.fun2();
	return 0;
}

二、内联函数与宏替换比较

内联函数相比于宏替换的优点:

  • 内联函数带有安全检查,宏替换没有
  • 内联函数在书写时更具有可读性
  • 宏替换在预处理期进行代码替换,内联函数在编译期扩展

内联函数相比于普通函数:减少函数调用时的开销,提高程序的执行效率。

三、内联函数的适用情景

  • 内联函数适用于代码较少,调用频繁的情况:

由于内联函数以代码膨胀为代价,每个调用内联函数的地方都会插入一份函数的代码,内联函数可以看作是使用空间换时间来提升运行速度

并且使用inline关键字只是建议编译器将函数作为内联函数处理,编译器可能会将不适宜的内联函数取消内联,此时内联函数被编译器认为是普通的函数。

  • 不适用代码逻辑复杂的情况:

如果内联函数的代码体判断循环较多,逻辑复杂,此时执行此内联函数将会比调用普通函数开销更大。


大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

你可能感兴趣的:(C/C++,c语言,c++,开发语言,笔记,学习)