定义:
由己存在的对象,创建新对象。也就是说新对象,不由构造器来构造,而是由拷贝构造器来完成。拷贝构造器的格式是固定的。
class 类名
{
类名(const 类名 & another)
拷贝构造体
}
classA
{
A(const A & another)
{}
}
规则:
1系统提供默认的拷贝构造器。一经实现,不复存在。
2系统提供的是等位拷贝,也就是所谓的浅浅的拷贝(浅拷贝)。
3.浅拷贝,会导致内存重析构,double free,在有些情况下(含有堆空间的时候),要自实现拷贝构造。
4.要实现深拷贝,必须要自定义。
拷贝构造器发生的时机:
构造新对象 A a; A b=a;
传参或返回对象
传引用等价于,扩大了原对象的作用域。
栈上的对象是可以 返回的,但不能返回栈上的引用(除非是对象本身)