每日一讲:
浅拷贝与深拷贝的总结
浅拷贝会复制对象的成员变量值,但对于指针变量,仅复制指针地址而不复制指针指向的资源。这可能导致多个对象共享同一资源,从而在析构或修改时引发问题,如悬空指针或重复释放内存。
深拷贝则是为指针指向的资源重新分配内存,并复制资源内容,确保每个对象都有独立的资源,避免了共享资源带来的风险。
易错点在于:
1. 使用默认的浅拷贝行为处理动态内存资源。
2. 忘记为指针资源实现深拷贝。
3. 错误的析构顺序或资源管理导致内存泄漏或访问无效内存。
解决方法:
-自定义拷贝构造函数、赋值运算符和析构函数(即“三法则”)。
-使用智能指针(如std::shared_ptr或std::unique_ptr)管理资源,减少手动管理的复杂性。