再一次的探讨C++的构造函数
我在创建构造函数的时候一个是A(long &a,long &b),A(double &c)。在调用的时候是A(10)出现错误提示了,在这道题里第一个参数的类型不一样怎么还会出错呢,把第一个构造函数换成A(int &a,long &b)这样下就没有错误,请高手给解答一下。 问题点数:5、回复次数:8Top
1 楼Wolf0403(废人:独活十年~心如刀割)回复于 2003-10-05 00:37:39 得分 3
如果定义真的是 A(long&, long&b); 和 A(double&),那么 A(10); 这个形式是无法编译通过的。不能给一个需要引用的地方传递常量。
楼主再把问题研究一下。Top
2 楼gavinbj(孤寂的流浪汉)回复于 2003-10-05 09:33:40 得分 0
不知道你的具体错误信息是什么,在构造函数中,必须有相应的类型匹配,你调用的参数形式不一致,系统应该告诉你没有找到相匹配的构造函数,所以你可以在定义一个只有一个参数的int类型的构造函数。Top
3 楼zhanzhiyuan(占志远)回复于 2003-10-06 21:24:13 得分 0
大哥你去看一下重载这个地方
认真看后就会明白为什么是这样了Top
4 楼jiangpeng(Mr. J)回复于 2003-10-06 21:38:24 得分 0
同意Wolf0403的看法
无法把一个rvalue传递个一个lvalue引用Top
5 楼asklxf(xuefeng)回复于 2003-10-07 03:12:11 得分 0
常量当然不能by addressTop
6 楼robbie24(独行虾)回复于 2003-10-07 11:28:51 得分 0
临时变量是const的~Top
7 楼flashsj()回复于 2003-10-07 11:59:37 得分 2
你的构造函数参数全部是引用
只有变量可以传给引用
你把第二个构造函数参数的&去掉
就没问题了
可以调用第二个构造函数Top
8 楼cvsuser(想当螃蟹的猪头)回复于 2003-10-07 16:45:23 得分 0
同意gavinbj(孤寂的流浪汉) 的说法
他找不到匹配的构造函数Top




