拷贝构造函数
概念:
拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(- -般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。
特征:
1.拷贝构造函数是构造函数的-一个重载形式。
2.拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。
无穷递归调用:
因为c++规定了传参必须调用拷贝函数来完成,
于是就有了无穷递归调用:
传参->拷贝构造->传参->拷贝构造->传参->拷贝构造->传参->拷贝构造
为了跳过反复拷贝构造的循环,我们可以讲传值变成引用,加上&
注意:
若没有写拷贝函数,编译器会生成默认的拷贝构造函数,默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。
也能够达到预期的效果:
但是如果栈拷贝,会导致栈的首元素int *_a 地址也相同,就不能达到预期的结果了
CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml
9ilk: 懂了谢谢
biter down: 第三个分解,原ababb 一>原 b
9ilk: 请问 执行第三个异或时,这个相当于a=b对吧,但为什么这个a不是等于赋值后也就是交换后的b
biter down: 博客已修改,感谢大佬指点🙏