读书人

函数的参数缺省值有关问题

发布时间: 2012-02-20 21:18:23 作者: rapoo

函数的参数缺省值问题
最近看《高质量c++/c编程指南》,关于函数的参数缺省值问题,有个地方没看明白。

#include <iostream.h>

void output(int x);
void output(int x, float = 0.0);

void output(int x)
{
cout << "output int" << x << endl;
}

void output(int x, float y)
{
cout << "output int" << x << "and float" << y << endl;
}

void main(void)
{
int x = 1;
float y = 0.5;
output(x);
output(x,y);
}

为什么主函数里面第一个output会出现二义性问题?而第二个output就没问题呢?

[解决办法]
你是要调用第一个函数,还是使用默认参数,调用第二个呢?
编译器无法判断
[解决办法]
第一个用void output(int x); 或者void output(int x, float = 0.0);都能匹配。第二个给了两个参数肯定匹配void output(int x, float = 0.0);啊
[解决办法]
第一个用void output(int x)或void output(int x, float = 0.0)都能匹配两个都能匹配,所以二义了
[解决办法]
编译器无法准确判断出是要调用第一个函数还是第二个函数,因为两个都可以.

读书人网 >C++

热点推荐