一.概述
复制构造函数作用:
使用一个已经存在的对象去初始化同类的一个新对象,其形参是本类对象的引用。如果没有定义复制构造函数,编译器会在必要时自动生成一个隐含的复制构造函数。
声明和实现复制构造函数:
class 类名
{
public:
类名(形参表);//构造函数
类名(类名& 对象名);//复制构造函数
private:
};
类名::类名(类名& 对象名)
{
函数体
}
二.何时调用复制构造函数
- 当用类的一个对象去初始化该类的另外一个对象说时
point p1(1,2);
point p2(p1);
point p3=p1;//以上两种写法形式不同但是执行的操作相同
-
如果函数的形参是类的对象,调用复制构造函数,将实参值拷贝给形参
注意: 只有把对象用值传递的时候才会调用复制构造函数,如果传递引用,不会调用复制构造函数。
-
如果函数返回值是类的对象,函数执行完成返回调用者时