C++ 类对象之间相互赋值,应该增加什么函数?为什么只定义拷贝构造函数还不够?

简答题~~~~... 简答题~~~~ 展开
 我来答
051201012
2011-06-29
知道答主
回答量:26
采纳率:0%
帮助的人:26.1万
展开全部
拷贝构造函数 顾名思义 它也是构造函数中的一种 是通过一个已经存在的对象去构造出一个还没有存在的对象 就是定义那个还没有存在的对象 而对象之间的要赋值 就说明 被赋值的对象是之前已经存在的了 现在要改变它自身的数据成员 下面举个例子:
class A
{。。。};
int main()
{
A a1;
A a2 = a1;(1)
a2 = a1;(2)
}
(1)a2的构造调用了拷贝构造函数
(2)就是要把a2赋值
那么普通的类对象是不能通过“=”进行赋值操作的 唯有的方法 一是你自己写成员函数 而更多的 是将“=”操作符重载 从而达到赋值的目的。
“=”重载 网上有很多例子 随便搜搜就知道了 关键是要搞清楚拷贝构造函数和“=”操作符重载的区别。
心依星动
2011-06-29 · TA获得超过259个赞
知道答主
回答量:72
采纳率:0%
帮助的人:62.5万
展开全部
这一题应该考的是拷贝构造函数与赋值操作符重载函数的区别:
首先,拷贝构造函数的调用时机存在以下三种情况:
(1)类对象的初始化;
(2)类对象作为函数形参以传值方式传递;
(3)类对象作为函数的返回值以传值方式返回。
注:这里要强调一下,对于临时类对象本来也应该调用拷贝构造函数,但有的编译器会做优化处理,不调用拷贝构造函数。答题时不用考虑。。。
函数实参传递和返回值的语义就等同于初始化。
所以拷贝构造函数用于用一个已存在的类对象去构造另一个新的对象;
而赋值操作符重载函数则是用一个已存在的类对象去赋值给另一个已存在的对象,即只更新其内容或值,而不是像拷贝构造函数那样去构造一个新的对象。。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糜韦0fp
2011-06-29 · 超过16用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:24.5万
展开全部
赋值构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式