当用一个对象去初始化另一个对象的时候,就会去调用复制构造函数。举个例子:
Class a = Class(2,1);
Class b = a;
其中的b 对象就是调用了复制构造函数后生成的对象。
当函数按值传递给对象或者函数返回对象的时候,都会使用复制构造函数。
默认复制构造函数是逐个复制非静态成员的值,因为静态成员是独立于每个对象而存在的。这种复制称为浅复制。
例如,一个String类型对象指向一片内存,那么使用默认复制构造函数,将把这个地址赋给新值。使两个指针指向同一个对象。这样当调用析构函数,释放对象时将会出错,试图去释放以释放的内存会报错。
这时候就需要深度复制了。将去复制指向的值。而不是指针值。也就是重新去调用new操作符生成一个新的成员。
这次讲的比较少,因为下班回来后真的好累。书看进去的效率不是很高。以后会渐渐补完整。