C++——面向对象(二)——默认的构造函数(2)
C++——面向对象(二)
拷贝构造函数:用一个已经存在的对象初始化相同类型新对象 ,
调用的拷贝构造函数,必须传引用
防止实参和形参递归构造
系统提供的拷贝构造函数 ,浅拷贝,多次释放同一资源
初始化和赋值的区别:
初始化:定义的同时赋值
赋值:定义后再给值
实参到形参是赋值的过程,不能按照对象的值进行传递,会引起递归构造
默认的拷贝构造,对象的内存互相初始化,浅拷贝会导致崩溃,拷贝构造函数实现后,代码运行正常
CGoods good3 = good2; this指针指向good3,rhs引用good2函数,rhs是外部的,可以直接访问外部对象私有的成员,同一个类类型生成的不同对象,共享成员方法,rhs引用的对象和this指针指向的对象,它们的类型是一样的,
什么情况下会发生浅拷贝,当对象
构造函数自己无法调用,是系统根据定义的对象的类型所选择的。析构可以自己调,自己调了,系统还调,
默认构造构造good1
带三个参数的构造构造good2,
拷贝构造函数,用good2拷贝构造good3
赋值运算符重载 用good3给good1赋值
good3析构
good2析构
good1析构
当调用good1 = good1时,计算0地址的有效字符,会崩溃,0地址是不可访问的,防止自赋值,
3步:1.防止自赋值
2.释放旧资源
3.开辟新资源进行初始化