C++ 对象的初始化和赋值的区别

在C++中,为什么对象的初始化(将一个对象赋值给另一个对象)需要复制构造函数,而对象的赋值却不用,对象的初始化和赋值究竟有什么区别?比如有一个类:classstudent... 在C++中,为什么对象的初始化(将一个对象赋值给另一个对象)需要复制构造函数,而对象的赋值却不用,对象的初始化和赋值究竟有什么区别?
比如有一个类:class student,而且已有一个对象 stu1;
student stu2=stu1; 我觉得程序做了3件事:
这时,就调用了 复制构造函数 ,
1.调用默认构造函数 student stu2();
2.调用 复制构造函数
3.赋值
不知对不对?
展开
 我来答
vbtraz
2009-12-03 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4451万
展开全部
yili16438 那个解释不对。

整个表达式只做了一件事情就是调用复制构造函数, 没有默认构造也没有赋值。 student stu2=stu1; 等价于括号的写法 student stu2(stu1);

声明语句中的=和表达式中的=完全是两个语法功能, 不能混为一谈

要说差别, 如果你把这些东西都当作函数来看那么区别就是很明确的: 它们调用的函数不一样。 按语法来看, 各种构造只发生在对象产生的时候, operator=只发生在对象产生之后。
yili16438
2009-12-03 · TA获得超过255个赞
知道小有建树答主
回答量:459
采纳率:100%
帮助的人:330万
展开全部
第二步并不是调用复制构造函数,而是调用重载=运算符函数
C++之父建议我们这样初始化
student stu2(stu1); //这才是复制构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式