社区
C语言
帖子详情
求教复制构造函数和operator=有什么区别,各在什么时候用
julyclyde
2002-10-12 01:08:08
求教
...全文
93
14
打赏
收藏
求教复制构造函数和operator=有什么区别,各在什么时候用
求教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lufly2000
2002-10-18
打赏
举报
回复
关注中。。。
sandrowjw
2002-10-17
打赏
举报
回复
实际上可以和数组赋值类比,可以对数组用 ={litheral1,litheral2......}这种形式的地方,就是使用拷贝构造函数的地方,其他用到=的地方就是用了重载。
sandrowjw
2002-10-17
打赏
举报
回复
实际上可以和数组赋值类比,可以对数组用 ={litheral1,litheral2......}这种形式的地方,就是使用拷贝构造函数的地方,其他用到=的地方就是用了重载。
陈硕
2002-10-13
打赏
举报
回复
请仔细看看书。
class Person { /* ... */ };
Person person_a; // default ctor
Person person_b(person_a); // copy ctor
Person person_c = person_a; // copy ctor
Person person_d;
person_d = person_a; // operator=
qhgary
2002-10-13
打赏
举报
回复
付值的时候调用operator=?那就不调用拷贝构造函数了?如果没有operator=,那是不是就调用拷贝构造函数呢?
xiaosheng80
2002-10-13
打赏
举报
回复
侯捷的effective c++上讲得很清楚,拷贝构造函数在初始化的时候被调用,而operator = 在赋值时被调用。
xray1111
2002-10-12
打赏
举报
回复
在没有重载=运算符之前,如果相同类型变量之间赋值,将调用拷贝构造函数。如果没有拷贝构造函数,将调用缺省拷贝构造函数,即,将成员变量简单复制。
重载了=后,调用重载函数赋值。
重载=运算符可以用于不同类型变量间的赋值操作。
sandrowjw
2002-10-12
打赏
举报
回复
拷贝构造函数在第一次初始化对象的时候用,其他时候用=重载。
maninsea
2002-10-12
打赏
举报
回复
拷贝构造函数使用在用已存在的对象产生新对象的地方,包括
1,OBJ A;
OBJ B=A;
2, 对象作为函数参数,在形实参结合时
3,函数返回对象
而 operator= 仅在 = 两边对象都已存在的地方
如,
OBJ A, B;
A = B;
xyj53
2002-10-12
打赏
举报
回复
还有一点,
operator=是按内存中的内容按bit逐位复制一个新的完全相同的对象;新旧对象
占用相同的内存。但这两个对象撤消时同样的内存要释放两次;
copy constructor解决内存释放问题,不按bit逐位复制。
marconi
2002-10-12
打赏
举报
回复
copy constructor是要构造一个新的对象,这个对象先前不存在,
operator= 是把一个已经存在的对象变成另一个对象。
zhdleo
2002-10-12
打赏
举报
回复
我记得Effective 2/e上说:
两者的情况有一点点不同,因为程序中要是有 传值的动作 就会 调用复制构造函数。
还有就是我的理解:复制构造函数可以有多个,=重载只有一个。
理解的不深,见笑了。
coppermine
2002-10-12
打赏
举报
回复
copy constructor: 开始只存在一个对象,然后以该对象为源对象构造出一个新的对象。
例如已存在对象 Type A;
Type B=A; //copy constructor was called.
assignment operator = : 存在两个对象,用一个对象的内容设置另一个对象。
例如Type A,B;
//一些关于B的操作
...
A = B; assignment operator = was called.
52cgi
2002-10-12
打赏
举报
回复
http://www.csdn.net/Expert/TopicView1.asp?id=1089527
帮帮忙,谢谢
c++
构造函数
例子1.2里面的函数名等于类名的函数成员就叫作
构造函数
,在每次你定义一个新对象的时候,程序自动调用,这里,定义了2个对象,一个apple, 一个orange,分别用了2种不同的方法,你会发现
构造函数
的作用,这里,要说的...
数据结构总结
链表和数组的
区别
,在什么情况下用链表什么情况下用数组? D. 栈和队列的
区别
? E. 多态,举例说明;overload和override的
区别
? F. 字符串有关的函数,比如让你写一个拷贝字符串的函数啊,或...
为什么C++中千万不要返回局部对象或变量的引用和指针
既然所有C++权威的书上都要求“一定不要返回局部对象或变量的引用和指针”,那为什么C++编译器不从语法上直接禁掉这种用法。如果只是建议的话,那么“返回局部对象或变量的引用和指针”是否有用武之地呢?(从理论上...
程序员笔试知识点整理
0、常考基础必知必会 ... 链表和数组的
区别
,在什么情况下用链表什么情况下用数组? D. 栈和队列的
区别
? E. 多态,举例说明;overload和override的
区别
? F. 字符串有关的函数,比如让你写一个拷贝
数据结构知识点总结整理
数据结构知识点总结整理 ... 链表和数组的
区别
,在什么情况下用链表什么情况下用数组? D. 栈和队列的
区别
? E. 多态,举例说明;overload和override的
区别
? F. 字符串有关的函数,比如让你
C语言
69,370
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章