中易网

什么叫内联成员函数,代码膨胀,刚学c++看什么书好~我有一点c语言基础

答案:4  悬赏:30  
解决时间 2021-01-11 06:41
  • 提问者网友:沉默菋噵
  • 2021-01-10 19:28
什么叫内联成员函数,代码膨胀,刚学c++看什么书好~我有一点c语言基础
最佳答案
  • 二级知识专家网友:渊鱼
  • 2021-01-10 20:15
内联函数如果要精确定义可以到MSDN上查询

我只是大略跟你说明一下

你首先应该了解代码复用性
由于我们在实现某个程序,而某个程序中存在某个功能会频繁调用
我们就会把这个功能抽象成一个函数

每次调用普通函数,其实函数调用是一种软中断,每次调用的时候会进行现场保护
就是会保存如PSW的值 寄存器值
而函数返回之后就会恢复现场
这一些都需要CPU资源开销

而内联函数是一种与编译器的约定,本来编译器会根据你定义的函数
将每次调用该函数时都进行标记或是给一个地址值(实际上这个值是错误的,因为编译器无法知道其运行时的地址,链接器做的工作)
而如果函数标记了内联的话(inline),则编译器会先进行性能判断,如果OK则会将函数调用处的call指令到ret全部替换成你函数体的指令
也就是说 没有调用该函数,而是直接执行函数体内部的代码

而代码膨胀一说,因为本来函数调用就是为了代码复用
而你却直接把函数的本体全部添加到调用处了 就好比你没有写这个函数 而是重复函数内部的执行代码
如果你调用了100000次这样的内联函数
如果你每个函数内部都有10行的话
那么你可以想象编译器帮你复制粘贴了多少的代码。。

自己的理解,不懂HI我
全部回答
  • 1楼网友:空山清雨
  • 2021-01-10 23:20
自己敲代码好累的说
  • 2楼网友:旧脸谱
  • 2021-01-10 22:37
先说内联函数。简单地说,就是经常使用且代码比较少的函数可以定义为内联函数,比如时间由格式time_t转为字符串表示的函数。在类体内实现的函数编译器默认为内联函数。
代码膨胀,个人理解就是代码不精简,有些臃肿,至于什么原因引起的要具体分析。
  • 3楼网友:往事埋风中
  • 2021-01-10 21:00
摘自《effective C++》条款30:
inline:对此函数的每一个调用,都以函数本体替换之。
代码膨胀:使用inline可能会增加目标码的大小,过度热衷inlining会造成程序体积太大,即代码膨胀。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息