到底有没有调用拷贝构造函数?

aaabianhuakai 2009-09-12 12:30:25

class a
{public:
//virtual void fun()const =0;
a(int i){cout<<"a";}
a(const a& t){cout<<"copy ";}
};

a aa=2;



本人知道这种不声明为explicit的构造函数有很多弊端 这里只是想知道是否有copy constructor?
c++ primer上说 这里会先调用构造函数 然后是拷贝构造 但是怎么没有调用呢
大家帮忙看看
...全文
108 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aopha 2009-09-12
  • 打赏
  • 举报
回复
“本人知道这种不声明为explicit的构造函数有很多弊端 这里只是想知道是否有copy constructor?
c++ primer上说 这里会先调用构造函数 然后是拷贝构造 但是怎么没有调用呢
大家帮忙看看”

要看具体的场景。
你用相同类型的数据赋值的时候才是调用拷贝构造函数。

aaabianhuakai 2009-09-12
  • 打赏
  • 举报
回复
fox000002 2009-09-12
  • 打赏
  • 举报
回复
这里调用的肯定是 ctor 啦

ttklboy 2009-09-12
  • 打赏
  • 举报
回复
这代码能运行么?
eatsweetpotato 2009-09-12
  • 打赏
  • 举报
回复
如果没有调用复制构造,那就是被优化掉了。
_捕风捉影_ 2009-09-12
  • 打赏
  • 举报
回复
这问题么,自己调试下就知道了
operatingtuzi 2009-09-12
  • 打赏
  • 举报
回复


a aa;
a aaa=aa // copy
a aa(aaa) //copy
a aa=i; a aa=a(i) // 只调用构造函数 拷贝被优化
ZangXT 2009-09-12
  • 打赏
  • 举报
回复
首先,这确定是一个copy初始化。
但因为编译优化,表象上看更像是直接初始化。

可以参考:《C++ Gotchas》的问题56.
abcdef0966 2009-09-12
  • 打赏
  • 举报
回复
不懂,mark

64,654

社区成员

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

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