C++中拷贝使用的时机:
1. 使用一个创建完毕的对象来初始化一个新的对象。
People p1;
People p2(p1); //使用了拷贝,赋值了各个值
2.用值传递的方式给函数参数传值
void visit(People p) {}
int main
{
People p1;
visit(p1); //值传递会复制一个object的副本出来,使用了拷贝
}
3.以值的方式返回局部对象
People copy()
{
People p1; //按道理p1是局部变量,出了函数就会被释放。
return p1; //根据p1创建一个新的对象,并且返回
}
People p = copy();
浅拷贝,简单的拷贝操作
深拷贝,在堆区的重新开辟内存,进行拷贝操作
C++浅拷贝会引起的问题。
假设类中用 new 创建了堆区内存,并且 object之间进行了赋值操作,会导致在delete——释放内存,时出现重复释放同一块内存空间的问题。
因此在使用new并且出现对象赋值操作后,应该使用深拷贝。
例如:
int *m_Age;
深拷贝: m_Age = new int(*p.m_Age); //p是被拷贝的对象
标签:p1,People,int,Age,new,拷贝 From: https://www.cnblogs.com/yywuqing/p/17263083.html