c++题,关于构造函数的

[复制链接]
查看11 | 回复1 | 2010-2-23 18:26:34 | 显示全部楼层 |阅读模式
show函数使用的是参数传递不是值传递,所以相当于在show函数内部为实参做了一个复制,然后输出,构造这个复制体的时候由于将实参的值传了进去(传进去的值是实参这个类本身,类形是Con),就相当于调用了Con的第三个构造函数(这里涉及到构造函数的参数匹配),所以输出了3.这么说可以不?
回复

使用道具 举报

千问 | 2010-2-23 18:26:34 | 显示全部楼层
Con c1; 创建对象,调用Con()默认构造函数,输出:1show(c1);在传递类类型对象时创建临时对象,它调用的的默认复制(拷贝)构造函数,而不是构造函数!而你又定义了复制(拷贝)构造函数:Con(Con& c): ID(c.getID()){ cout<<3;}编译器就不生成复制(拷贝)构造函数说以输出了:3后面的同理...参考资料:C++ Primer

已赞过已踩过<
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行