7. 函数

来源:互联网 发布:鞋子 知乎 编辑:程序博客网 时间:2024/05/16 08:49
  1. 形参实参传递: 如果形参是非引用类型,则复制实参;如果是引用类型,则它只是实参的别名。
  2. 复制实参的局限性:
    • 需要在函数中修改实参的值;
    • 当传递大型对象时,耗费时间和内存;
    • 当没有办法实现对象的复制;
    • 使用引用形参返回额外的空间(因为函数只能返回一个值,则如果需要修改两个值时,则可以在参数中使用引用形参返回所需值)。
  3. 当使用引用传参是为了避免复制实参,则应将形参定义为const引用。
    • 也就是说在函数调用过程中形参没有修改内容,仅仅是读的操作,则可以将此形参定义为const,防止在函数调用中修改值;
    • 并且const形参调用中,非const实参也可以匹配;
    • 而非const引用形参使用中不灵活,既不能用const引用对象初始化,也不能用字面或产生右值的表达式实参初始化。
  4. 重载中,const和非const形参的定义可以用来重载。匹配中,const匹配const,非const匹配非const。

    • 不能基于指针本身是否为const来实现函数重载:

    f(int *);
    f(int *const); //非重载,error

  5. 不能返回局部的引用和指针,因为在函数结束的时候其就自动消失了。

0 0