拷贝构造器
copy constructor 拷贝构造器
由己存在的对象,创建新对象。也就是说新对象,不由构造器来构造,
而是由拷贝构造器来完成。拷贝构造器的格式是固定的。
系统提供了默认的拷贝构造器
语法定义
class 类名
{
类名(const 类名 & another)
拷贝构造体
}
构造特性:
- 系统提供默认的拷贝构造器。一经实现,不复存在。
- 系统提供的是等位拷贝,也就是所谓的浅拷贝。
shallow copy:是指拷贝了指针,但不拷贝指针指向的对象。 如果对象中不含有堆上的空间(*),浅拷贝可以满足需求
深拷贝deep copy:是指拷贝了指针,并且拷贝了指针指向的对象。如果对象中含有堆上的空间(*),深拷贝必须要自定义。
- 要实现深拷贝,必须要自定义。
- 发生时机:制作对象的副本,以对象作为参数和返回值。
shallow/deep 拷贝
系统提供默认的拷贝构造器,一经定义不再提供。但系统提供的默认拷贝构造器是
等位拷贝,也就是通常意义上的浅(shallow)拷贝。
如果类中包含的数据元素全部在栈上,浅拷贝也可以满足需求的。
但如果堆上的数据,则会发生多次析构行为。
数据包含在栈上的空间ÿ