传值、传引用摘录

1)“传值”需要对象的构造和析构,可能会很耗时。
2)“传值”对于一般对象而言,传递的大小总是大于“传引用”

3)对于小对象,例如int,“传值”会比“传引用”更高效。

其实函数的参数一般程序语言的编译器都是放在 stack 里的
传值就是把值 push 進 stack, 传引用则是把地址 push 入

比如
int a = 3;
fun(a);               // 把 a 的值放入堆
fun2(&a);             // 把 a 的地址放入堆

在不需要改変参数里的值时, 用传值, 要改変实参数里的值时, 用传引用, 另外如果要传入的是一些比较大的结构数据, 为了效率, 就算不改変其值也会使用传引用的, 因为不用把大量数据拷進堆里

传值时要为实参在栈上分配存储空间,函数调用时对实参复制一份放在这
里。函数体中对形参的一切操作,是对实参在栈上的副本的操作,对原来
的实参没有影响。

传引用时只在栈上为实参分配一个指针的存储空间,函数调用时只把实参
的指针传递进来了(引用实际上是不易出错的指针)。函数体中对形参的
一切操作,就是对实参的操作。

引用主要是解决大对象在传递时构造函数和析构函数的系统开销

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值