inline

╰半橙微兮° 2022-08-30 11:49 241阅读 0赞
  • 内联函数类似于宏函数,会在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度
  • 与宏函数不同,内联函数具有函数特性,在运行时可调试;在代码展开时会做安全检查或自动类型转换;类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量;
  • 内联函数只是对编译器的建议,是否对函数内联在于编译器,编译器一般不内联包含循环、递归、switch 等复杂操作的内联函数
  • 内联以代码膨胀(复制)为代价,消除函数调用带来的开销。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
  • inline 函数无法随着函数库升级而升级。inline函数的改变需要重新编译,不像 non-inline 可以直接链接。
  • inline可以修饰虚函数的,但是当虚函数表现多态性的时候不能内联,因为编译器无法知道运行时调用哪个

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读

    相关 inline

    内联函数类似于宏函数,会在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度 与宏函数不同,内联函数具有函数特性,在运行时可调试

    相关 inline函数

          先给出一到判断题:inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度,上面说法是否正确.答案是false。为什么呢?下面

    相关 inline关键字

    写在前面 > c++ inline关键字 主要内容 Tip: 只有当函数只有 10 行甚至更少时才将其定义为内联函数. 定义: 当函数被声明为内联函数之后, 编