免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2287 | 回复: 5
打印 上一主题 下一主题

一小段程序,vc++编译通过,g++编译却出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-19 19:04 |只看该作者 |倒序浏览
#include <iostream>
using namespace std;
class test{
  public:
     test(){cout<<"con"<<endl;}
         test(test& A){ cout<<"copy construct"<<endl;}
};
test fun(){
  test f;
        return f;
}
int main(){
  test A=fun();
}

错误:
13 main.cpp no matching function for call to `test::test(test)'
6 candidates are: test::test(test&)

论坛徽章:
0
2 [报告]
发表于 2007-11-19 19:35 |只看该作者
复制构造函数采用常引用参数
test(const test& A);

test(test& A); // 这种形式将会使调用陷入无穷的递归 (TC++PL 11.3.4)

vc 6.0 很不标准
vc 7.1以上就很好

[ 本帖最后由 westgarden 于 2007-11-19 19:37 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-11-19 19:35 |只看该作者
>>test(test& A){ cout<<"copy construct"<<endl;}

test(const test& A){ cout<<"copy construct"<<endl;}

论坛徽章:
0
4 [报告]
发表于 2007-11-19 23:28 |只看该作者
原帖由 westgarden 于 2007-11-19 19:35 发表
复制构造函数采用常引用参数
test(const test& A);

test(test& A); // 这种形式将会使调用陷入无穷的递归 (TC++PL 11.3.4)

vc 6.0 很不标准
vc 7.1以上就很好


我看书上的说的是 test(test A) 这种形式 会使调用陷入无穷递归..

论坛徽章:
0
5 [报告]
发表于 2007-11-19 23:55 |只看该作者
标准规定对临时对象的引用必须是常量引用

论坛徽章:
0
6 [报告]
发表于 2007-11-20 10:53 |只看该作者
原帖由 redhat008 于 2007-11-19 23:28 发表


我看书上的说的是 test(test A) 这种形式 会使调用陷入无穷递归..

你是对的,我看错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP