
拷贝和复制是一个意思,对应的英文单词都是copy。对于计算机来说,拷贝是指用一份原
有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将
Word 文档拷贝到 U 盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的
文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。
在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已
经存在的对象创建出一个新的对象。从本质上讲,对象也是一份数据,因为它会占用内存。
严格来说,对象的创建包括两个阶段,首先要分配内存空间,然后再进行初始化:
分配内存很好理解,就是在堆区、栈区或者全局数据区留出足够多的字节。这个时
候的内存还比较“原始”,没有被“教化”,它所包含的数据一般是零值或者随机值,没有
初始化就是首次对内存赋值,让它的数据有意义。注意是首次赋值,再次赋值不叫
初始化。初始化的时候还可以为对象分配其他的资源(打开文件、连接网络、动态分配内存
等),或者提前进行一些计算(根据价格和数量计算出总价、根据长度和宽度计算出矩形的
面积等)等。说白了,初始化就是调用构造函数。
很明显,这里所说的拷贝是在初始化阶段进行的,也就是用其它对象的数据来初始化新对象
的内存。