读书人

新手有关问题②,高手HELP///

发布时间: 2012-02-21 16:26:23 作者: rapoo

新手问题②,高手HELP///
#include <iostream>
using namespace std ;
int add(int x=5,int y=10)
{
cout < <x+y < <endl;
return 1;

}

int add(int x=7,int y=10,int z=3)
{
cout < <x+y+z < <endl;
return 1;

}

void main()
{
int a=1,b=2;


add(a,b);

}


//////////////////////////////////////////////////////////////////
这个程序有错误....
..上面我想用重载函数.....~!~!
(重载函数区别不同的调用不是看参数类型和参数的个数吗??)
............
但上面的程序.我看上去..像是重载..但.我觉得..又是却省函数..

......参数个数不一样时..怎么判断是重载..还是却省...谢谢..

[解决办法]
int add(int x=5,int y=10)
-------------------------------------
int add(int x=7,int y=10,int z=3)

你这个函数重载中的两个函数都是采用默认参数(缺省值),为此当你调用它时就会出现问题,因为add(a,b);会产生歧异,因为你调用的可能是int add(int x=5,int y=10),也有可能是int add(int x=7,int y=10,int z=3)
在add(a,b);中--> 会表示为add(a,b);(两个参数)或者 add(a,b,10);(三个参数),因为你的第三个参数是默认的,为此调用时是可以省略掉!!
[解决办法]
重载函数好像不能带默认参数吧
[解决办法]
二义性太严重,这不明摆着跟编译器过不去嘛。。。

[解决办法]
重载2义了,
int add(int x=5,int y=10) 去掉,
只留下 int add(int x=7,int y=10,int z=3) 就可以了

读书人网 >C++

热点推荐