为什么调用复制构造函数,而不是在此处调用赋值运算符:“Cents cNancy = cMark;” [英] Why Copy Constructor is called, not Assignment operator here : "Cents cNancy = cMark;"
本文介绍了为什么调用复制构造函数,而不是在此处调用赋值运算符:“Cents cNancy = cMark;”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Cents cNancy = cMark; // cMark是现有对象
这里调用复制构造函数,而不是赋值运算符?
可以任意一个告诉原因?
谢谢
解决方案
这里假设Cents是一个类,cNancy,cMark实例of Cents class。
Cents cNancy; //这里将调用默认构造函数。
cNancy = cMark; //这里将调用赋值运算符。
Cents cNancy = cMark; //这里新的对象cNancy是通过
调用拷贝构造函数从cMark创建的。
因为这是一个C ++
规则。
分数cNancy = cMark;
与
Cents cNancy(cMark); $ p相同$ p>
即变量初始化:例如,参见Herb Sutter'的政府#1 - 变量初始化 [ ^ ]。
分配和初始化之间存在差异。
初始化看起来像这样 -int i = 10;
赋值如下所示 -int i; i = 10;
因此规则很简单 - 赋值运算符用于赋值。
Cents cNancy = cMark; //cMark is existing object
Here Copy Constructor is called, not Assignment operator?
Can any one tell why?
Thanks
解决方案
Here assuming that Cents as a class, cNancy, cMark instances of Cents class.
Cents cNancy; // here default constructor will be called.
cNancy = cMark; // here assignment operator will be invoked.
Cents cNancy = cMark;// Here new object cNancy is created from cMark by
calling copy constructor.
Because that is aC++
rule.
Cents cNancy = cMark;
is the same as
Cents cNancy(cMark);
That is variable initialization: see, for instance, Herb Sutter''s GotW #1 - Variable initialization[^].
There is a difference between assignment and initialization.
Initialization looks like this -int i = 10;
Assignment looks like this -int i; i = 10;
So the rule is simple - Assignment operator is used for assignment.
这篇关于为什么调用复制构造函数,而不是在此处调用赋值运算符:“Cents cNancy = cMark;”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文