C++ 面试题
目录

C++ 中什么是深拷贝 (deep copy) 和浅拷贝 (shallow copy)?

· 约 3 分钟读完 · 第 22 / 181 章

推荐答案

在C++中,深拷贝(deep copy) 和 浅拷贝(shallow copy) 是两种不同的对象复制方式,主要区别在于它们如何处理对象中的指针或动态分配的资源。

  • 浅拷贝:浅拷贝只是简单地复制对象的成员变量的值,包括指针的值。这意味着如果对象中有指针指向动态分配的内存,浅拷贝后的两个对象的指针将指向同一块内存。这可能导致多个对象共享同一资源,从而引发潜在的问题,如双重释放内存。

  • 深拷贝:深拷贝不仅复制对象的成员变量的值,还会为指针指向的动态分配的内存创建新的副本。这意味着深拷贝后的两个对象各自拥有独立的资源,互不干扰。

本题详细解读

浅拷贝的示例

深拷贝的示例

关键点总结

  • 浅拷贝:只复制指针的值,不复制指针指向的内容。多个对象共享同一资源,可能导致资源管理问题。
  • 深拷贝:复制指针指向的内容,每个对象拥有独立的资源,避免了资源管理问题。

在实际编程中,如果类中包含指针或动态分配的资源,通常需要实现深拷贝以避免潜在的问题。