求大神解释,为什么程序运行出来是这个结果,如下Copy initianization constructor is called.Copy initianization constructor is called.Date:2012-12-13Destructor is called.Date:2012-12-13程序如下:# include using namespace std;class
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 07:57:18
![求大神解释,为什么程序运行出来是这个结果,如下Copy initianization constructor is called.Copy initianization constructor is called.Date:2012-12-13Destructor is called.Date:2012-12-13程序如下:# include using namespace std;class](/uploads/image/z/7588901-29-1.jpg?t=%E6%B1%82%E5%A4%A7%E7%A5%9E%E8%A7%A3%E9%87%8A%2C%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E5%87%BA%E6%9D%A5%E6%98%AF%E8%BF%99%E4%B8%AA%E7%BB%93%E6%9E%9C%2C%E5%A6%82%E4%B8%8BCopy+initianization+constructor+is+called.Copy+initianization+constructor+is+called.Date%3A2012-12-13Destructor+is+called.Date%3A2012-12-13%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%B8%8B%EF%BC%9A%23+include+using+namespace+std%3Bclass)
求大神解释,为什么程序运行出来是这个结果,如下Copy initianization constructor is called.Copy initianization constructor is called.Date:2012-12-13Destructor is called.Date:2012-12-13程序如下:# include using namespace std;class
求大神解释,为什么程序运行出来是这个结果,如下
Copy initianization constructor is called.
Copy initianization constructor is called.
Date:2012-12-13
Destructor is called.
Date:2012-12-13
程序如下:
# include
using namespace std;
class Date
{
public:
Date(int x,int y,int z)
{
year=x;
month=y;
day=z;
}
Date(const Date &D);
~Date()
{
cout
求大神解释,为什么程序运行出来是这个结果,如下Copy initianization constructor is called.Copy initianization constructor is called.Date:2012-12-13Destructor is called.Date:2012-12-13程序如下:# include using namespace std;class
首先,
第一行的Copy initianization constructor is called.
这行是因为Date d1(2012,12,13);//这句话相当于先new Date(2012,12,13)然后将这个对象拷贝给d1,如果把main()中的这句话改为Date *d1=new Date(2012,12,13);同时应该将Date d2=d1;改为Date d2=*d1;否则报错,因为d1现在是指针.改了后第一行的"Copy ..."就没了.
第二行的"Copy..."则是因为 Date d2=d1;//等价于Date d2(d1);所以会调用拷贝构造函数.
第三行的"Destructor ..."是因为sameDay里面函数中的形参A被宰调用完sameDay后被释放掉了,因为它是临时的量,只在这个函数内起作用.
最后的在你输入a后,还会调用两次~Date,分别将d1和d1解析掉,你可以将
int a;
cin>>a;
改为system("pause");
然后敲任意键后会发现命令框中快速闪过两句"Destructor ..."