什么是拷贝构造函数?
- 拷贝构造函数实质上也是一个构造函数,与类同名并且没有返回类型。
- 长相是:Sample::Sample(Sample &p)有时会加上const限定Sample::Sample(const Sample &p)
什么时候调用拷贝构造函数?
①创建对象时,可以用同类另一个对象来对其初始化,这时需要调拷贝构造函数;
形如:类名 对象(源对象)或者类名 对象=源对象;
注意:新建对象才会调用拷贝构造函数,而已有对象则只是进行简单的赋值运算!
②当函数的形参是值对象时,实参向形参传递参数的同时就会调用拷贝构造函数。
形如对象(对象)
③当函数返回值是值对象时,在返回函数时调用拷贝构造函数完成拷贝。
面向对象中的知识点:
- 每个类中都有默认的拷贝构造函数(系统自己隐式调用的浅拷贝)
- 当类中有指针类型的成员时,浅拷贝已经不能支持,此时需程序员自己编写一个深拷贝。