关于C++的一道题!!!

两幅图是以道题....输出结果:callthedefaultconstructor!callthecopyconstructor!PointP2:10,20callthe... 两幅图是以道题....

输出结果:call the default constructor!
call the copy constructor!
Point P2:10,20
call the default constructor!
call the assign constructor!
Point P2:20,20
call the destructor!
call the destructor!
call the destructor!

想问的是结果输出的不明白 每一个结果都不知道怎么来的。
第二个POINT P2 为什么是20 20
还有最后三个 call the destructor! 怎么来的呢!!!

谢谢!!!!好人一生平安!!!
展开
 我来答
White_MouseYBZ
2013-01-26 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6659万
展开全部
执行Point P1(10,20)时创建对象P1,调用构造函数Point(int x=0,int y=0),输出call the default constructor!
执行Point P2(P1)时是用已知对象P1初始化P2,所以要调用拷贝构造函数Point(Point &p),输出call the copy constructor!
执行cout << P2时,由于P2是对象,要调用<<的重载友元函数,P2是由P1初始化的,P1的x=10,y=20,所以输出Point P2:10,20.
执行Point P3(20,20)时,同第一次一样,输出call the default constructor!
执行P2=P3时,要调用=号的重载函数,输出call the assign constructor!,并把P3中x、y的值赋给P2的x、y。
最后调用cout << P2时,输出Point P2:20,20.因为P2的x、y已经等于P3的x、y了。
当程序运行到main的后}时,要退出,需要调用3次析构函数来释放P3、P2、P1,所以连着输出了3个call the destructor!,你可以在~Point()中的最后多加一个“!”,看看是不是它输出的……
siliekakaxi
2013-01-26 · TA获得超过297个赞
知道小有建树答主
回答量:212
采纳率:100%
帮助的人:91.2万
展开全部
首先调用第一个函数
Point P1(10,20);
这时候函数初始化调用构造函数
输出:
call the default constructor!
调用第二个函数Point P1(10,20);
此函数重写构造函数。所以不会输出第一行语句。
调用拷贝函数并且输出
call the copy constructor!
Point P2:10,20
调用第三个函数的时候先调构造函数,,然后调用了成员函数,输出
call the default constructor!
call the assign constructor!
Point P2:20,20
最后函数结束调用析构函数,三个函数都被析构。输出:
call the destructor!
call the destructor!
call the destructor!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式