关于拷贝构造函数的使用情况

Edwardyewei 2008-06-17 08:42:01
在下面的代码的main函数中类Copy的拷贝构造函数被调用了多少次
Copy f(Copy c)
{
Copy temp(c);
return temp;
}
main()
{
Copy c1;
Copy c2=f(c1);
}
A. 2 B. 3 C. 4 D. 5
我知道c1代入函数做参数使用了一次,Copy temp(c)一次,还有哪儿?
...全文
60 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vitin 2008-06-17
  • 打赏
  • 举报
回复
因为是否优化,是有编译器决定的。
当然在某个具体的编译器上(以及确定的配置),调用次数是固定的。
CHARLISW 2008-06-17
  • 打赏
  • 举报
回复
怎么会有最多和最少,调用了几次就是几次
3
Vitin 2008-06-17
  • 打赏
  • 举报
回复
最多四次,最少两次。
1、构造 c
2、构造 temp // 通过“具名返回值优化”,可以去掉
3、构造 f 的返回值 // 通过“返回值优化”,可以去掉
4、构造 c2
太乙 2008-06-17
  • 打赏
  • 举报
回复
Copy c2=f(c1); 这等号不算一次??
胡椒爸爸 2008-06-17
  • 打赏
  • 举报
回复
一般编译器都会有返回值优化的,所以就是你说的这两次了
ckt 2008-06-17
  • 打赏
  • 举报
回复
普通情况下

return temp; // 也会调用
  • 打赏
  • 举报
回复
如果有返回值优化,那么通常就这2次.

64,282

社区成员

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

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