以下程序中执行 for(i=0;i<4;i++) print(p[i]);的时候为什么会自动调用用 C(const C&c){...}啊?

[复制链接]
查看11 | 回复2 | 2012-5-29 11:46:47 | 显示全部楼层 |阅读模式
void print(C c) 是传值调用,所以在进入print函数之前,会调用C的拷贝构造(C(const C&c))去生成的和传入的p完全相同的临时对象。 你可以把void print(C c) 改成void print(C& c)这样就不会调用拷贝构造了...
回复

使用道具 举报

千问 | 2012-5-29 11:46:47 | 显示全部楼层
因为print调用的时候会复制参数,就会调用C类的拷贝构造函数C(const C&c)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行