关于拷贝函数和赋值运算符函数的问题

假设A是一个类类型Aa;Ab=a;//为什么这里调用的是拷贝函数,而不是赋值运算符函数?和这样写Ab(a);有什么区别?高手解释,谢谢!... 假设A是一个类类型
A a;
A b=a;//为什么这里调用的是拷贝函数,而不是赋值运算符函数?
和这样写A b(a);有什么区别?
高手解释,谢谢!
展开
 我来答
她是我的小太阳
高粉答主

推荐于2016-08-17 · 醉心答题,欢迎关注
知道顶级答主
回答量:5.1万
采纳率:83%
帮助的人:9076万
展开全部
这个单独的语句肯定是赋值运算符了
这个才是拷贝构造函数:
Point P2 = P1;
或者:
Point P2(P1);
如果定义了赋值预算,则调用的是赋值运算函数,如果没有定义,则调用拷贝函数
还有一点,如果重载操作符= 为A& operator = (const A& a)参数设为引用,就不会调用拷贝构造函数,如果定义重载操作符= 为A& operator = (const A a)就会调用拷贝构造函数,具体要看怎样重载。
恋上右岸的鱼
推荐于2016-08-17
知道答主
回答量:4
采纳率:0%
帮助的人:3.3万
展开全部
如果你定义了赋值预算,则调用的是赋值运算函数,如果没有定义,则调用拷贝函数
还有一点,如果重载操作符= 为A& operator = (const A& a)参数设为引用,就不会调用拷贝构造函数,如果定义重载操作符= 为A& operator = (const A a)就会调用拷贝构造函数,具体要看你怎样重载。如果你在类声明中没有定义拷贝构造函数和赋值运算符,编译器会给你加上默认的拷贝构造函数和赋值运算符,这时候你调用哪个就是哪个喽
追问
两个函数都定义
A b=a;//调用拷贝构造函数
定义了赋值运算符函数,没定义拷贝构造函数
A b=a;//还是调用编译器提供的默认拷贝构造函数,没有调用定义的赋值运算符函数,为什么
你没回答到点子上啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式