CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

inline一定是内联函数(越早知道越好)定义时使用关键字 inline的函数就是内联函数,C++ inline内联函数,就知道这些,

1.带有inline关键字的函数一定是内联函数

内联函数存在背景函数是一个可以重复使用的代码块,CPU 会一条一条地挨着执行其中的代码CPU 在执行主调函数代码时如果遇到了被调函数,主调函数就会暂停,CPU 转而执行被调函数的代码;被调函数执行完毕后再返回到主调函数,主调函数根据刚才的状态继续往下执行。

2.定义内联函数一定要用inline

一个 C/C++ 程序的执行过程可以认为是多个函数之间的相互调用过程,它们形成了一个或简单或复杂的调用链条,这个链条的起点是 main(),终点也是 main()当 main() 调用完了所有的函数,它会返回一个值(例如。

3.inline修饰的函数一定会被内联

return 0;)来结束自己的生命,从而结束整个程序函数调用是有时间和空间开销的程序在执行一个函数之前需要做一些准备工作,要将实参、局部变量、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码;函数体中的代码执行完毕后还要清理现场,将之前压入栈中的数据都出栈,才能接着执行函数调用位置以后的代码。

4.带inline关键字定义的函数为

如果函数体代码比较多,需要较长的执行时间,那么函数调用机制占用的时间可以忽略;如果函数只有一两条语句,那么大部分的时间都会花费在函数调用机制上,这种时间开销就就不容忽视为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。

5.inline函数作用

这种在函数调用处直接嵌入函数体的函数称为内联函数(Inline Function),又称内嵌函数或者内置函数内联函数使用场景当函数比较复杂时,函数调用的时空开销可以忽略,大部分的 CPU 时间都会花费在执行函数体代码上,所以我们一般是将非常短小的函数声明为内联函数。

6.定义时使用关键字 inline的函数就是内联函数

由于内联函数比较短小,我们通常的做法是省略函数原型,将整个函数定义(包括函数头和函数体)放在本应该提供函数原型的地方使用内联函数的缺点也是非常明显的,编译后的程序会存在多份相同的函数拷贝,如果被声明为内联函数的函数体非常大,那么编译后的程序体积也将会变得很大,所以再次强调,一般只将那些短小的、频繁调用的函数声明为内联函数。

7.内联函数必须通过关键字inline来定义

内联函数使用示例例子如下#includeusingnamespacestd; inlineintSQ(int y){ return y*y; } intmain(){ int

8.用inline说明的函数都是内联函数

n, sq; cin>>n; //SQ(n) sq = SQ(n); cout<

9.所有内联函数都要用inline说明

cout<

10.用inline 声明的函数一定是内联函数

所以在编写C++代码时我推荐使用内联函数来替换带参数的宏和宏一样,内联函数可以定义在头文件中(不用加 static 关键字),并且头文件被多次#include后也不会引发重复定义错误这一点和非内联函数不同,非内联函数是禁止定义在头文件中的,它所在的头文件被多次。

#include后会引发重复定义错误内联函数在编译时会将函数调用处用函数体替换,编译完成后函数就不存在了,所以在链接时不会引发重复定义错误这一点和宏很像,宏在预处理时被展开,编译时就不存在了从这个角度讲,内联函数更像是编译期间的宏。

内联函数使用规范inline 关键字可以只在函数定义处添加,也可以只在函数声明处添加,也可以同时添加;但是在函数声明处添加 inline 关键字是无效的,编译器会忽略函数声明处的 inline 关键字也就是说,inline 是一种“用于实现的关键字”,而不是一种“用于声明的关键字”。

尽管大多数教科书中在函数声明和函数定义处都增加了 inline 关键字,但我认为 inline 关键字不应该出现在函数声明处这个细节虽然不会影响函数的功能,但是体现了高质量 C++ 程序设计风格的一个基本原则:声明与定义不可混为一谈,用户没有必要、也不应该知道函数是否需要内联。

更为严格地说,内联函数不应该有声明,应该将函数定义放在本应该出现函数声明的地方,这是一种良好的编程风格在多文件编程中,我们通常将函数的定义放在源文件中,将函数的声明放在头文件中,希望调用函数时,引入对应的头文件即可,我们鼓励这种将函数定义和函数声明分开的做法。

但这种做法不适用于内联函数,将内联函数的声明和定义分散到不同的文件中会出错内联函数虽然叫做函数,在定义和声明的语法上也和普通函数一样,但它已经失去了函数的本质函数是一段可以重复使用的代码,它位于虚拟地址空间中的代码区,也占用可执行文件的体积,而内联函数的代码在编译后就被消除了,不存在于虚拟地址空间中,没法重复使用。

内联函数看起来简单,但是有很多细节需要注意,从代码重复利用的角度讲,内联函数已经不再是函数了我认为将内联函数作为带参宏的替代方案更为靠谱,而不是真的当做函数使用在多文件编程时,我建议将内联函数的定义直接放在头文件中,并且禁用内联函数的声明(声明是多此一举)。

以上内容整理总结于网络,如有侵权请联系删除。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容