C++对象的copy constructor与copy assignment的区别与联系
来源:互联网 发布:嘉艺发型设计软件 编辑:程序博客网 时间:2024/06/06 09:21
copy constructor:
从一个已有的对象来构造另一个对象;
包括:
用已有对象来初始化新声明的对象;
将对象按值传递给函数作为参数;
函数按值返回对象。
copy assignment:
将已有的对象赋值个另一个已有的对象;
实例:
Person A(B); // copy constructor
Person C=B; //copy constructor
Function1(D); //copy constructor
B= Function2(…); //copy constructor
Person D;
D=B; //copy assignment
注意事项:编译器默认的copy constructor和copy assignment操作,是按照member-wise copy的方式逐个copy每个member,这种浅拷贝操作在有些情况下可能造成资源泄漏/指向重叠。
如果的确需要deep copy,需要自定义相应操作。这时需要清楚哪些地方用了copy constructor,哪些地方用了copy assignment,从而分别自定义copy constructor和copy assignment。一般来说,自定义的copy constructor、destructor和copy assignment操作常常同时出现。
区别与联系:
copy constructor不用检测是否是用一个对象来初始化它自己;
copy constructor不用对被构造对象做资源清理操作,如delete操作;
0 0
- C++对象的copy constructor与copy assignment的区别与联系
- copy constructor和copy assignment operator的区别
- copy构造函数与copy assignment操作符的区别
- 类的三个特殊成员Copy Constructor、Copy-Assignment Operator、Destructor重载与使用
- 函数返回语句与copy (move) constructor, copy (move) assignment operator的关系
- [C++]copy constructor and copy assignment operator
- copy constructor 和copy assignment operator的比较
- postgreSQL copy与\copy的区别
- Copy constructor and Copy assignment
- copy constructor and copy assignment
- assign、copy、retain、weak、strong的区别与联系
- copy构造函数与copy assignment操作符区别
- copy constructor, assignment, global
- copy 与 retain 的区别
- retain与copy的区别
- copy() 与 clone() 的区别
- Effective C++是copy constructor 还是 copy assignment(“=”)的判断
- copy constructor的实现
- 关于SetWindowOrgEx、SetViewportOrgEx、SetViewportExtEx 和SetWindowExtEx 详解
- POJ3617 Best Cow Line
- MySQL数据库引擎
- 查找字符串中指定的子串的首次出现的位置
- tslib库移植错误解决
- C++对象的copy constructor与copy assignment的区别与联系
- C Primer Plus 第十二章学习总结……2015.5.5
- poj1013
- SLIC超像素分割详解(一):简介
- C++中用到的读取和输出函数。。部分,尚待完善
- java int与integer的区别
- jquery实现标签属性控制
- apache安装前常见错误:checking for pcre-config... false
- ODBC教程