C++-------深拷贝

test t2(t1);
当出现有类似拷贝时,若类中数据成员涉及指针,
则应在类中显示定义深拷贝函数,即在拷贝函数中为指针开辟空间再进行拷贝赋值
若只是使用默认的拷贝构造函数的话,
因为此时t2的指针与t1的指针同时指向同一个地址,而当t2析构时,此地址空间被释放,再到t1析构时,已经不存在那个公共的地址了,
所以会出现错误。
解决办法是必须提供深拷贝构造函数,即在拷贝函数中为指针开辟空间再进行拷贝赋值,这时当t2析构时,只是析构自己指针所指向的地址空间,
与t1地址空间不同,但内容都相同,因为是深拷贝。

猜你喜欢

转载自www.cnblogs.com/god-for-speed/p/10924488.html