| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:[求助]关于拷贝构造函数,急!!
只看楼主 加入收藏
allen303alle
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-6-27
收藏
 问题点数:0 回复次数:12 
[求助]关于拷贝构造函数,急!!

widget t(widget u)
{
widget v(u);
widget w=v;
return w;
}
main ()
{
widget x;
widget y=t(t(x));
}


其中widget是一个类
请问这里一共调用了多少次拷贝构造函数?

[此贴子已经被作者于2007-7-3 23:41:01编辑过]

搜索更多相关主题的帖子: 函数 构造 拷贝 
2007-07-03 23:10
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
widget t(widget u)//传参,返回各一次 2
{
widget v(u); //3
widget w=v; //4
widget return w;//这里前面widget什么意思?是不是错了?
}
main ()
{
widget x; //一次
widget y=t(t(x));//调用2次t
}

[此贴子已经被作者于2007-7-3 23:38:41编辑过]


Fight  to win  or  die...
2007-07-03 23:32
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
嘿嘿,又是这个。。。
自己测试一下就知道了

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-07-04 09:46
allen303alle
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-6-27
收藏
得分:0 


return前的是多打了

main中第一行只调用构造函数吧

widget w=v; 这个应该是重载的=,如果这个不算一次的话我觉得应该是6次

可是我们老师一定说是7次,下午就要考了,这个是必考的,所以老师不给我们解释

大家看下到底是多少次啊


未贏其財,先贏其勢;獅子搏兔,君臨天下 ...................遇強即屈,借花敬佛。
2007-07-04 11:12
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
构造函数调用8次,
拷贝构造的话7次。

widget x; //一次
这次调用构造函数。

int a = b;//这是构造不是赋值,相当于int a(b)

int a;
a = b; //这才是赋值。

注意区分。

Fight  to win  or  die...
2007-07-04 11:47
allen303alle
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-6-27
收藏
得分:0 
能说明具体是哪7次吗?

谢谢~~~

未贏其財,先贏其勢;獅子搏兔,君臨天下 ...................遇強即屈,借花敬佛。
2007-07-04 13:16
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
2楼已经说明了

女侠,约吗?
2007-07-04 13:28
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 

伙计们,是9次,靠偷懒不行啊!
以下是测试代码
#include <iostream.h>
class widget
{
public:
widget(){}
widget(const widget& cpy)
{
*this=cpy;
cout<<&cpy<<" 调用复制构造函数! 构造"<<this<<endl;
}
};

widget tf(widget _u)
{
widget v(_u);
widget w=v;
return w;
}
int main()
{
widget x;
widget y=tf(tf(x));
return 0;
}
测试结果:

[IMG]C:\Documents and Settings\Administrator\桌面\结果.jpg[/IMG]

try new catch
2007-07-04 20:55
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
在构造函数里面加一句 "调用构造函数"
是以下结果
[IMG]C:\Documents and Settings\Administrator\桌面\结果.jpg[/IMG]

try new catch
2007-07-04 21:00
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
搞不清楚了,感觉该8次也。
不同的编译器给出来也不一样。

Fight  to win  or  die...
2007-07-04 21:32
快速回复:[求助]关于拷贝构造函数,急!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016301 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved