zoukankan      html  css  js  c++  java
  • c/c++面试19-22----inline的那些事儿

    19 为什么引入内联函数

      a:宏定义为什么效率高

       通常替代c语言中表达式形式的宏定义来解决程序函数调用问题,使用的是预处理器实现,没有参数压栈等到做。

      缺点;

        (1) 仅仅进行简单的替换,不能进行参数的有效性检查

        (2)返回值不能被强制转换为可以转换的合适类型

      b:inline推出的目的

        消除宏定义的缺点同时继承了其优点

    20 为什么inline能很好的取代表达式形式的预定义

      (1) 函数代码被放入符号表,使用的时候直接替换(就像宏一样的展开),没有调用的开销

      (2) 是一个真正的函数,调用的时候首先检查安全性,消除隐患

      (3)可以作为类的成员函数

    21 为什么不把所有的函数定义成内联函数

      (1) 内联是以代码复制为代价,只是省去了函数调用的开销。

      (2)每一次使用内联函数调用都会复制代码,代码量大消耗更多的内存空间

      下面的集中情况最好不使用内联:

        a:函数代码比较长

        b:函数体有循环,这样可能执行函数体内代码比调用的开销大

    22 内联函数与宏的区别

      (1)内联函数在编译的时候展开,宏是预编译展开

      (2)编译的时候,内联函数可以直接嵌入到目标代码中,而宏只是简单文本替换

      (3)宏不是函数,inline函数

      (4)内联函数可以完成诸如类型检测,语句是否正确等便宜功能,宏没有

    ------->>>>好了 明天应该开始学习引用和指针了,加油!

  • 相关阅读:
    链式表的操作
    顺序表的操作
    MDX基础
    1071 小赌怡情 (15 分)
    1069 微博转发抽奖 (20 分)
    1068 万绿丛中一点红 (20 分)
    1066 图像过滤 (15 分)
    02-线性结构2 一元多项式的乘法与加法运算 (20 分
    03-树1 树的同构 (25 分)
    03-树3 Tree Traversals Again (25 分)
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/7920673.html
Copyright © 2011-2022 走看看