课程
/后端开发
/C++
/C++远征之封装篇(上)
类内定义的函数一定是内联函数,为什么?
2016-09-18
源自:C++远征之封装篇(上) 5-3
正在回答
这里面有一个很绕的语言问题,就是类成员函数的的确确就是内联函数,但是展不展开是不一定的,所以你说他是内联函数没有一点毛病,只不过展布展开要看编译器,一般来说代码如果有8行左右的样子,那类成员函数就和普通的函数调用没什么区别了,该建立栈帧建立栈帧,该给局部变量分配空间就给局部变量分配空间
不一定是
知乎上的回答:
如果不当作是内联,多个文件包含该头文件就会有多份同名函数定义(实现)了,如果定义的不是类成员函数而是普通函数,链接时会出现同名函数的错误,大概是XXX already defined in XXX。
编译器决定是否生成内联代码完全是优化策略的问题。一般认为如果函数体积很小,内联可以节约函数调用开支以提升性能,就会生成内联的代码。如果函数体积比较大,内联节约的函数调用开支与函数本身相比可忽略,反而内联造会成代码体积变大,多占用内存,这种情况不会生成内联的代码。
在类中定义的成员函数全部默认为内联函数。可以显示加上 inline 标识符,或者不加。在类中声明的成员函数,如果没加inline,则在类外定义该成员函数时加了inline,该成员函数也为内联函数。
是的,内联函数的定义就是在类体内定义的成员函数
残损摩天轮
晚安的喵喵
举报
封装--面向对象的基石,本教程力求帮助小伙伴们即学即会