浅谈C++内联函数

来源:互联网 发布:数据库 er设计 编辑:程序博客网 时间:2024/06/05 11:04
定义:
内联函数(Inline Function)指在函数调用处直接嵌入函数体的函数。即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开,又称内嵌函数或者内置函数。

指定方式:
在函数定义处(不是声明处)增加 inline 关键字。
类体内部定义的函数默认就是内联函数。在类体中定义的成员函数会自动成为内联函数,在类体外定义的不会(如果想让其成为内联函数则在外部定义时 增加inline关键字)。

优点:
消除函数调用的时空开销,提高效率。
缺点:
频繁的调用内联函数和宏定义容易造成代码膨胀,消耗更大的内存而造成过多的换页操作。

试用场景:
(1)一个函数不断被重复调用;(2)函数只有简单的几行,且函数不包含for、while、switch语句;
(3)类的声明和定义在同一文件。

内联函数和宏定义的区别:
(1)在预编译时期,宏定义在调用处执行字符串的原样替换。在编译时期,内联函数在调用处展开,同时进行参数类型检查或自动类型转换(同普通函数更)更安全可靠。
(2)内联函数首先是函数,可以像调用普通函数一样调用内联函数或是调试。而宏定义往往需要添加很多括号防止歧义,编写更加复杂且无法调试。
(3) 内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了(无法将this指针放在合适位置)。


原创粉丝点击