对象作为函数参数和返回值的传递方式

1、对象作为函数参数的调用

a. 函数调用时传递基本类型的数据是通过运行栈,传递对象也是通过运行栈
b. 运行栈中,在主调函数和被调函数之间,存在一块两者都可以访问的公共区域
c. 主调函数把实参值写入其中,
d. 函数调用发生后,被调函数通过读取这段区域就可取得形参值。
e. 需要传递的对象,只要建立在运行栈的这段区域上即可。

注意:在传递过程中将实参值复制到这段区域上

具体实现:

1. 传递基本类型数据时,仅做一般的内存写操作即可;
2. 对于对象参数,则需要调用复制构造函数
	eg.主函数中有:         fun(b);//b为类B的对象
a. 在主调函数调用 fun(b)时,就需要调用B类的复制构造函数,
b. 使用对象b,在公共区域(运行栈上)复制构造一个临时的同类对象(假设b1),c作为被调函数的参数。
c. 虽然c在主调函数中没有名称,但是其地址却可以参与计算。
d. 因此编译器可以调用类B的复制构造函数,为对象b1进行初始化。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值