拷贝构造函数:
用一个已经存在的对象来生成一个相同类型的新对象。(浅拷贝)
默认的拷贝构造函数:
如果自定义了拷贝构造函数,编译器就不在生成默认的拷贝构造函数。
如果没有自定义拷贝构造函数,但在代码中用到了拷贝构造函数,编译器会生成默认的拷贝构造函数。
深拷贝&浅拷贝:
系统默认的拷贝构造函数是浅拷贝,类中含有指针类型的变量,须自定义拷贝构造函数用深拷贝来实现。
浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,所指向的空间内容并没有复制,而是由两个对象共用。深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。
如图:
思考:
当对象中存在指针成员时,为什么需要自己实现拷贝构造函数?如果不,会出现怎样的问题?
看代码:
#include<iostream>
class CGoods
{
p