对于一个空的类,编译器一般默认它会有四个成员函数:构造函数、析构函数、拷贝(复制)构造函数、赋值函数。拷贝函数其实是一种特殊的构造函数,它的形参是类对象,其原型是:
ClassName(const ClassName & other);
不过这仅仅是将内存空间的内容做了拷贝,这种拷贝方式称为浅拷贝。而对于数据成员有指针类型的类来说,默认的拷贝构造函数无法完成对其内容的拷贝,此时的解决办法就是必须自己定义一个拷贝构造函数,然后在进行数值拷贝之前为指针类型的数据成员重新开辟一个独立的内存空间,这种还需要另开辟新的内存空间的拷贝方式称作是深拷贝。