• 参数传递模式


    T为一个类名.

    1.void f(T x)  按值传递

    :调用函数时,产生一个x的副本,函数中修改x副本的值不会修改x的值;

    优点:安全,可以防止参数X在函数中不小心被修改

    缺点:1.调用f函数时,因为要产生一个副本,所有要调用T类的构造函数。

    2.f函数结束时,又要调用T类的析构函数

    若T类是一个大型类会非常耗时,降低效率。

    3.若有时对象不允许被复制(有时复制对象操作仅限于特权用户或被禁止【此处可能是把复制对象的函数放在private中声明】)

    2.void f(const T x) 按值传递

    有上面一个的所有优缺点

    特别之处:因为x被声明为const对象所以x的副本在f函数中不能被修改.

    3.void f(T& x) 按引用传递

    优点:可以直接对x进行写入和读取

    缺点:若x在函数中被销毁,函数外有存有x地址的变量,在调用x时,会导致程序崩溃.

    (在多线程环境中,这种方式是十分危险的)

    4.void f(const T& x)  按引用传递

    优点和3例一样。

    特别之处:此方法x只能被读取,不能被修改.(在传递大型对象是,此传递方法强烈推荐)

    5.void f(T* x) 按指针传递

    在调用函数时,产生一个指向x的指针(4字节大小,几乎可以忽略不计).

    优点:可以直接修改x.

    缺点:若在函数中销毁x,会产生主函数的指针悬挂.

    特别注意:若函数中的x改变所指对象,不会改变函数外x所指的内容.

    指针有空指针(即NULL或0)

    所以最好 void f(T* x=0)

    提醒即使把空指针传递给函数也不会有问题

    6.void f(const T* x) 按指针传递

    优点只能对x进行读取.

    7.void f(T* const x)

    可以对x进行读取和写入,但是不能移动指针。

    8.void f(const T*const x)

  • 相关阅读:
    fedora 27
    Python3 字符串操作
    python3 使用matplotlib画图问题
    Python3 移动文件——合集
    MySQL开放外部链接
    python之csv操作问题
    Question
    17-12-21
    python之List排序
    ubuntu版的sublime-text3输入中文问题
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/6485703.html
Copyright © 2020-2023  润新知