拷贝函数的三种调用方式

1.使用一个已经创建完成的对象来初始化一个新对象,就比如有参构造接收了一个属性后拷贝构造copy它后可以将获取的值赋值给自己的属性

记得拷贝后还要再进行赋值才行

2.值传递的方式给函数参数

额外声明一点,因为我们知道struct和class很相似,目前我们知道这两个的区别在于在默认情况下的权限不一样,class默认下是私有权限,而struct是公开的,但是这都不是重点,重点是他们两很相似,而struct是一个自定义数据类型时候用的,由此可以推断我们的class后面也是自定义的数据类型。

从第27行开始,我们创建了两个函数,一个work和一个test01函数,work函数的参数用数据类型person 和变量p2来接收实参,而我们的test01函数调用work并传入了自己刚刚创建的对象p1,因为是值传递所以形参的改变不会影响实参。

3.值方式返回局部对象

这里我们有两个函数work和test01,work函数创建一个对象p1,并且返回,在test01中我们调用了work函数且用p来接收这个对象,但是注意,我们值传递时,返回的对象并不是这个对象本身,是对象的副本。

至于为什么没有拷贝函数时,可能是因为c++编译器更新或达到11版本后,由一个返回值优化的功能,能够省去一些不必要的移动以及步骤,简称RVO;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值