C++中关于复制构造函数的几个问题
程序如下:#include<iostream>#include"date.h"usingnamespacestd;Datefun(Dated);intmain(){Dat...
程序如下:
#include <iostream>
#include "date.h"
using namespace std;
Date fun(Date d);
int main()
{
Date date1(2000,1,1),date2(0,0,0)
Date date3(date1);
date2=fun(date3);
cout<<"date1:";
date1.Print();
cout<<"date2:";
date2.Print();
cout<<"date3:"
date3:Print();
return 0;
}
Date fun(Date d)
{
Date temp;
temp=d;
return temp;
}
关于这个程序我有以下几个问题:
1、对于Date fun(Date d)
Date fun是什么函数?它既不是构造函数也不是内联函数,那么为什么前面还要加Date?括号中的Date d又是什么意思?
2、date2=fun(date3); 为什么不直接写date2=date3?而非要调用复杂的复制构造函数?
3、
Date temp;
temp=d;
return temp;
这三行语句存在的意义是什么?我觉得没有这个语句也可以实现把d3的值传给d2啊 展开
#include <iostream>
#include "date.h"
using namespace std;
Date fun(Date d);
int main()
{
Date date1(2000,1,1),date2(0,0,0)
Date date3(date1);
date2=fun(date3);
cout<<"date1:";
date1.Print();
cout<<"date2:";
date2.Print();
cout<<"date3:"
date3:Print();
return 0;
}
Date fun(Date d)
{
Date temp;
temp=d;
return temp;
}
关于这个程序我有以下几个问题:
1、对于Date fun(Date d)
Date fun是什么函数?它既不是构造函数也不是内联函数,那么为什么前面还要加Date?括号中的Date d又是什么意思?
2、date2=fun(date3); 为什么不直接写date2=date3?而非要调用复杂的复制构造函数?
3、
Date temp;
temp=d;
return temp;
这三行语句存在的意义是什么?我觉得没有这个语句也可以实现把d3的值传给d2啊 展开
2个回答
展开全部
fun()只不过是用户自定义的一个函数而已,他的功能很类似拷贝构造函数,但他并不是拷贝构造函数,拷贝构造函数的函数名和类名相同,Date类本身有默认拷贝构造函数;
Date fun(Date)是函数声明,指明了fun函数的返回类型和参数类型,函数要声明后才能被调用;
date2=fun()是fun函数的调用,date2=date3也能达到相同效果只不过原理不同,一个是调用用户自定义函数,一个是调用默认拷贝构造函数;
从fun的定义看得出其实fun最终也是利用了默认拷贝构造函数(temp=d),实验性的代码,没有什么意义;
Date fun(Date)是函数声明,指明了fun函数的返回类型和参数类型,函数要声明后才能被调用;
date2=fun()是fun函数的调用,date2=date3也能达到相同效果只不过原理不同,一个是调用用户自定义函数,一个是调用默认拷贝构造函数;
从fun的定义看得出其实fun最终也是利用了默认拷贝构造函数(temp=d),实验性的代码,没有什么意义;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询