小众知识

首页 > 正文

再一次的探讨C++的构造函数

我在创建构造函数的时候一个是A(long &a,long &b),A(double &c)。在调用的时候是A(10)出现错误提示了,在这道题里第一个参数的类型不一样怎么还会出错呢,把第一个构造函数换成A(int &a,long &b)这样下就没有错误,请高手给解答一下。  

 Wolf0403 发表于:2003-10-05 00:37:39
得分:3 

如果定义真的是 A(long&, long&b); 和 A(double&),那么 A(10); 这个形式是无法编译通过的。不能给一个需要引用的地方传递常量。
楼主再把问题研究一下。 

 gavinbj 发表于:2003-10-05 09:33:40
得分:0 

不知道你的具体错误信息是什么,在构造函数中,必须有相应的类型匹配,你调用的参数形式不一致,系统应该告诉你没有找到相匹配的构造函数,所以你可以在定义一个只有一个参数的int类型的构造函数。 

 zhanzhiyuan 发表于:2003-10-06 21:24:13
得分:0 

大哥你去看一下重载这个地方
认真看后就会明白为什么是这样了 

 jiangpeng 发表于:2003-10-06 21:38:24
得分:0 

同意Wolf0403的看法
无法把一个rvalue传递个一个lvalue引用 

 asklxf 发表于:2003-10-07 03:12:11
得分:0 

常量当然不能by address 

 robbie24 发表于:2003-10-07 11:28:51
得分:0 

临时变量是const的~ 

 flashsj 发表于:2003-10-07 11:59:37
得分:2 

你的构造函数参数全部是引用
只有变量可以传给引用
你把第二个构造函数参数的&去掉
就没问题了
可以调用第二个构造函数 

 cvsuser 发表于:2003-10-07 16:45:23
得分:0 

同意gavinbj(孤寂的流浪汉) 的说法
他找不到匹配的构造函数 

上一篇:C++初学者的问题
下一篇:C++库函数

分享到: