C++编译器为类提供默认的复制构造函数(和赋值运算符)。当我们不提供复制构造函数(和赋值运算符)的实现,并尝试使用已初始化的相同类的对象初始化对象时,将调用复制构造函数并将类的成员一一复制到目标对象中。
默认副本构造函数(和赋值运算符)的问题是–当我们拥有在运行时动态初始化的成员时,默认副本构造函数将使用动态分配的内存而不是该内存的真实副本的地址来复制此成员。现在,两个对象都指向相同的内存,并且一个对象的变化反映在另一个对象中。此外,主要的灾难性影响是,当我们删除一个对象时,另一个对象仍然指向同一内存,这将是悬空的指针,并且内存泄漏为这种方法也可能存在问题。
因此,在这种情况下,我们应该始终编写自己的副本构造函数(和赋值运算符)。
资料来源:http://www.fredosaurus.com/notes-cpp/oop-condestructors/copyconstructors.html
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。