C++中拷贝对象有浅拷贝与深拷贝两种:
浅拷贝是指复制对象时,对于对象中的数据成员按位进行拷贝,数据的值都一摸一样。对于简单数据成员进行值拷贝这个没有问题,但是
对于动态数据成员(指向堆对象的指针),不能简单的进行值拷贝,必须要重新分配动态空间。否则,两个对象的析构函数将对同一个内存
空间释放两次,产生运行时错误。对于动态数据成员的重新分配动态空间,这种叫做深拷贝。
当类不定义拷贝构造函数的时候,编译器会自动生一个构造函数,叫做默认拷贝构造函数。默认拷贝构造函数使用的是浅拷贝方式。
如果类中含有动态数据成员,就必须自定义拷贝构造函数来实现深拷贝。