对象的赋值与复制

文章作者:w88手机版登录网络 上传时间:2019-09-26

对象的赋值与复制: 赋值:通过“ = ”运算符重载

 代码如下

User a(10),b;

b = a;

复制:调用复制构造函数

User b;

User a(b);

或者

User a = b;//相当于User a(b);

与赋值的区分,赋值是对三个业已存在的靶子开展赋值(已经落到实处定义了被赋值的目的),而复制是从无到有创建三个新的靶子,并使它与已有的对象一样。

浅复制与深复制: 若对象中有指针成员,在复制时,只会将该指针成员的地址复制给新确立的靶子,由此,五个对象中的指针成员都指向了同样块内部存储器区域,在出狱时会出现重复释放的标题。 要求手动定义复制构造函数,在构造函数中校为指针变量分配新的内部存款和储蓄器,是区别对象的指针成员指向分化的内部存储器区域。

用到拷贝构造函数的三种情状: 1、要求建构一个新对象,并用另一个同类对象对其张开初步化 2、函数的参数为类的对象时,在调用函数时须求建设构造一个实参的正片,按实参复制一个形参,系统是透过调用拷贝构造函数完毕的 3、函数的重临值是类的对象:函数调用结束时,需求将函数中的对象复制一个不常对象,并传给该函数的调用处。

 代码如下

User getUser()

User temp; 

return temp;

}

int main()

User user = getUser();//调用getUser();

}

getUser()函数调用结束时,getUser中创立的目标temp的生命周期甘休(将要告罄),所以不是将temp带回main,而是在实行return语句时,调用User类的正片构造函数,按temp拷贝一个新的、对象,然后将它赋值给user.

本文由w88手机版登录-www.w88zhan.com-优德w88app官方登录发布于w88手机版登录网络,转载请注明出处:对象的赋值与复制

关键词: w88优德娱乐