请高手给解释下这个含有默认参数的函数重载问题

[复制链接]
查看11 | 回复1 | 2011-4-9 14:45:38 | 显示全部楼层 |阅读模式
#include
using namespace std;
void func(int IntData, int DefaultData = 0)
{

cout << "int实参,含有默认参数的函数被调用\n";

cout << IntData << "
" <<DefaultData <<endl;
};
void func(int IntData)
{

cout << "int形参,不含有默认参数的函数被调用\n";
};
void func(double DoubleData, int DefaultData = 0)
{

cout << "double形参,含有默认参数的函数被调用\n";

cout << DoubleData << "
" <<DefaultData <<endl;
};
void func(double DoubleData)
{

cout << "double形参,不含有默认参数的函数被调用\n";
};
int main()
{

int IntData = 3;

double DoubleData = 3.0;

float FloatData = 3.0f;

//func(IntData);

func(IntData, IntData);

func(IntData, DoubleData);

//func(DoubleData);

func(DoubleData, IntData);

func(DoubleData, DoubleData);

//func(FloatData);

func(FloatData, IntData);

func(FloatData, DoubleData);
}
为什么最后的结果是所有的形参的值都成了3?

回复

使用道具 举报

千问 | 2011-4-9 14:45:38 | 显示全部楼层
void func(int IntData, int DefaultData = 0){
cout << "int实参,含有默认参数的函数被调用\n";
cout << IntData << "
" <<DefaultData <<endl; };void func(int IntData){
cout << "int形参,不含有默认参数的函数被调用\n";};程序一般不能像以上这两个函数这样重载,因为当你给程序传递一个int型变量的时候,程序可以调用第一个,也可以调用第二个,系统总会调用参数较多的那个,而当你给它传递两个参数,其中第一个是int型的时候,程序自然而然会调用第一个,也就说
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行