关于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! 怎么来的呢!!!
谢谢!!!!好人一生平安!!! 展开
输出结果: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! 怎么来的呢!!!
谢谢!!!!好人一生平安!!! 展开
2个回答
展开全部
执行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()中的最后多加一个“!”,看看是不是它输出的……
执行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()中的最后多加一个“!”,看看是不是它输出的……
展开全部
首先调用第一个函数
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!
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!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询