一.拷贝构造函数:
就是用已存在的类类型对象创建新对象时由编译器自动调用 d2(d1)。
对于一些普遍类的拷贝构造,系统拷贝构造(浅拷贝)就可以了,但是对于stack这种类需要深拷贝,所以就需要我们自己写拷贝构造。
二.参数类型:
只有单个形参,其唯一形参必须是引用,但并不限制为const,一般普遍的会加上const限制。不能使用值传递。
1.为什么不能使用值传递。
原因:调用拷贝构造,如果进行传值传参的话,在传参过程中,又需要对对象进行拷贝构造,如此往复就会引发无穷递归。
2.为什么要加const限制
原因:拷贝构造函数的目的是用其它对象的数据来初始化当前对象,不期望更改其它对象的数据。
三.深浅拷贝:
#include<iostream>
using namespace std;
class Person {
public:
Person() //无参默认构造函数
{
cout << "默认构造函数" << endl;
}
Person(int age, int height)
{
m_Age = age;
m_Height = new int(height);//浅拷贝将height地址值赋值m_Height
cout << "有参" << endl;
}
~Person()
{
if (m_Height != NULL)
{
delete