C++杂记

来源:互联网 发布:数据机房搬迁报价 编辑:程序博客网 时间:2024/04/30 00:19

主要记录一些平时遇到的比较琐碎的知识点。

1.关于vector类

vector类的功能比数组强大,但付出的代价是效率稍低。如果你需要的是长度固定的数组,使用数组是更佳的选择,但代价是不那么方便和安全。

2.关于内联函数
编译过程的最终产品是可执行程序——由一组机器语言指令组成。运行程序是,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令。有时(如果循环获分支语句时),将跳过一些指令,向前或向后跳到特定地址。常规函数调用也使程序跳到另一个地址(函数的地址),并在函数结束时返回。执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码(也许还需将返回值放入到寄存器中),然后跳回到地址被保存的指令处(这与阅读文章时停下来看脚注,并在阅读完脚注后返回到以前阅读的地方类似)。来回跳跃并记录跳跃位置意味着使用函数时,需要一定的开销。
C++内联函数提供了另一种选择。内联函数的编译代码与其他程序代码“内联”起来了。也就是说,编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,再跳回来。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内从。如果程序在10个不同的地方调用同一个内联函数,则改程序将包含该函数代码的10个副本。

3.关于引用变量做参数

通过将引用变量用作参数,函数将使用原始数据,而不是其副本。
引用和指针的差别之一是,必须在声明引用时将其初始化,所以指针会有空指针,引用却不会有空引用。






0 0
原创粉丝点击