对象克隆

    在C++中,有一个特殊的构造函数叫做拷贝构造函数,用于解决对象间浅层拷贝存在的问题。

    C++中每一个类会有一个默认的拷贝构造函数,使用默认的拷贝构造函数实现的是对象的浅层拷贝,大致的工作就是将一个对象的“成员属性”值逐一复制到另外一个对象。默认的拷贝构造函数能够满足大多数的使用需求,但如果类的成员属性中含有指针变量,使用默认的拷贝构造函数就会出现“指针悬挂”的问题。

    什么是指针悬挂?简单的说是这么个情况:某个类A的成员属性中含有指针变量p,通过默认的拷贝构造函数由对象a1创建一个对象a2,由于默认的拷贝构造函数实现的是数值的简单复制,所以最终对象a1和a2的指针变量将具有相同的数值,即指向相同的内存空间,如果某个对象将这个空间释放,另一个对象并不知情,继续使用这个空间......


    Java中没有指针变量,也存在类似的问题。

原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11872002.html