为了账号安全,请及时绑定邮箱和手机立即绑定

类内定义的函数一定是内联函数?

类内定义的函数一定是内联函数,为什么?

正在回答

4 回答

这里面有一个很绕的语言问题,就是类成员函数的的确确就是内联函数,但是展不展开是不一定的,所以你说他是内联函数没有一点毛病,只不过展布展开要看编译器,一般来说代码如果有8行左右的样子,那类成员函数就和普通的函数调用没什么区别了,该建立栈帧建立栈帧,该给局部变量分配空间就给局部变量分配空间

0 回复 有任何疑惑可以回复我~

不一定是

知乎上的回答:

如果不当作是内联,多个文件包含该头文件就会有多份同名函数定义(实现)了,如果定义的不是类成员函数而是普通函数,链接时会出现同名函数的错误,大概是XXX already defined in XXX。

编译器决定是否生成内联代码完全是优化策略的问题。一般认为如果函数体积很小,内联可以节约函数调用开支以提升性能,就会生成内联的代码。如果函数体积比较大,内联节约的函数调用开支与函数本身相比可忽略,反而内联造会成代码体积变大,多占用内存,这种情况不会生成内联的代码。

0 回复 有任何疑惑可以回复我~

在类中定义的成员函数全部默认为内联函数。可以显示加上 inline 标识符,或者不加。在类中声明的成员函数,如果没加inline,则在类外定义该成员函数时加了inline,该成员函数也为内联函数。

2 回复 有任何疑惑可以回复我~

是的,内联函数的定义就是在类体内定义的成员函数

0 回复 有任何疑惑可以回复我~
#1

残损摩天轮

兄弟,不会就不要回答,误人子弟。咱可以先百度百度,了解了解,在回答。
2018-05-13 回复 有任何疑惑可以回复我~
#2

晚安的喵喵

类内定义的函数只是内联函数的默认形式,并不是他的定义。内联函数是在函数声明或者定义的时候在函数返回值类型前加关键字inline,定义处inline是显式,声明处是隐式。在类内定义的函数默认是内联函数,因为内联函数的本质就是以空间换时间。(所以缺陷也很明显,占空间,破坏内部代码结构)
2018-09-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

类内定义的函数一定是内联函数?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信