关于函数参数,返回值与拷贝构造函数的关系!!!

yiruirui0507 2010-10-09 11:54:12
#include<iostream>
using namespace std;
class Time
{
int hour,minute,second;
public:
Time():hour(0),minute(0),second(0)
{};
Time(Time &t);
void getTime();
void setTime(int h,int m,int s);

};
Time::Time(Time &t)
{
hour=t.hour;
minute=t.minute;
second=t.second;
cout<<"Notice!!! Copy constructor is being called."<<endl;
}
void Time::getTime()
{
cout<<"Now the time is"<<hour<<":"<<minute<<":"<<second<<endl;
}
void Time::setTime(int h,int m,int s)
{
if(m<0||m>59||s<0||s>59||h<0||h>23)
{
cout<<"Error!Please Check!"<<endl;
return ;
}
hour=h;
minute=m;
second=s;
}
void fun0(Time t)
{

}
Time fun1()
{
Time t;
return t;
}
void main()
{
Time time0;
time0.setTime(12,5,7);
Time time1(time0);
time1.getTime();
fun0(time0);
Time time2;
time2=fun1();
}
PS:代码没问题。Time time1(time0);这句代码调用了拷贝构造函数能够理解,请问下面的两次调用拷贝构造函数如何理解?希望能给点详细的理由!先谢谢大家了!
...全文
183 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Proteas 2010-10-09
  • 打赏
  • 举报
回复
看看《深度探索 C++ 对象模型》的前三章
elegant87 2010-10-09
  • 打赏
  • 举报
回复
你要知道拷贝函数在什么时候才被调用
1.当把一个对象赋给另外一个对象的时候
2.函数中的形参有一个对象,当实参和形参结合的时候
3.函数的返回值为一个对象时候

Time time1(time0);//针对第一种情况
fun0(time0);针对第二种情况
time2=fun1(); //针对第三种情况
gules 2010-10-09
  • 打赏
  • 举报
回复
fun0函数是传值,所以调用复制构造函数构建参数t;
fun1函数返回值,所以调用复制构造函数构建=操作符函数的参数。
参考《Effective C++》吧
yiruirui0507 2010-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 proteas 的回复:]
看看《深度探索 C++ 对象模型》的前三章
[/Quote]

template <class T> class ListNode
{
T data;
ListNode<T>* link;
public:
ListNode():link(NULL){}
ListNode(T value):lik(NULL),data(value){}
~ListNode(){};
void SetLink(ListNode<T>* next);
ListNode<T>* GetLink();
T& GetData();
};
这是一个结点类,请问
ListNode<T>* link; 这个是什么东西?该如何理解?
void SetLink(ListNode<T>* next);
ListNode<T>* GetLink();
以上两句也是这个类型,求指点!!!!

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧