标签:函数 C++ 关键字 编译器 inline cpp 内联
目录内联函数引入
- C中对于一些频繁计算的短代码,通常写成宏来避免函数调用开销,但是再C++中会带来一个问题,即:
- 预处理器不能访问类的成员,因此宏不能作为类的成员函数。
- c++中内联函数就用用来解决宏函数的缺陷。
C++用inline关键字来解决宏函数缺陷的问题
- 无论是在内联函数还是定义时都要加上inline关键字
- inline关键字本质其实跟宏函数一样,即在函数调用的地方直接将函数体复制过去,从而省去函数调用的开销,这是一种空间换时间的思想。
- 不同之处在于宏是在预处理阶段处理的,而inline内联函数是在编译阶段处理的。
- C++类中的方法默认都是inline的。
inline是一种建议
- 内联仅仅是给编译器的一种建议,编译器不一定接受这种建议,即将函数声明为inline,最终不一定能内联,而即便不声明,最终也有可能会inline。
- 某些情况下编译器不会将函数变成inline的,可以分两种情况,一种是函数体不能太过复杂,比如有很多循环语句,一种是不能对函数取地址,如果取了地址,那么该函数不会被内联。
- 总而言之,言而总之,知道这个概念就行。
标签:函数,C++,关键字,编译器,inline,cpp,内联 来源: https://www.cnblogs.com/chkplusplus/p/16399830.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。