Visual Studio中的函数声明和函数定义问题

A problem of function declaration and function definition in Visual Studio

本文关键字:函数 定义 问题 声明 Visual Studio      更新时间:2023-10-16

我是C++的初学者,遇到了一些问题。如果有人帮我,我会非常感激的。我的英语不是很好。我在Visual Studio中编写代码。当我同时使用重载函数和默认参数时,它可以如下所示:

double max(double a, double b, double c, double d = 3.1415926)
{
cout << "pi: " << d << endl;
if (a > b && a > c)
return a;
else if (b > a && b > c)
return b;
else
return c;
}

int max(int a, int b, int c, int d = 20)
{
cout << "d: " << d << endl;
if (a > b && a > c)
return a;
else if (b > a && b > c)
return b;
else
return c;
}
int main()
{
int x = 10, y = 6, z = 23;
double m = 1.2, n = 4.2, k = 3.1;
cout <<"max value in x, y, z: "<< max(x, y, z) << endl;
cout <<"max value in m, n, k: "<< max(m, n, k) << endl;
return 0;
}

然而,如果我首先声明函数,然后最后定义它,则会出现如下错误:

int max(int a, int b, int c, int d = 20);
double max(double a, double b, double c, double d = 3.1415926);
int main()
{
int x = 10, y = 6, z = 23;
double m = 1.2, n = 4.2, k = 3.1;
cout <<"max value in x, y, z: "<< max(x, y, z) << endl;
cout <<"max value in m, n, k: "<< max(m, n, k) << endl;
return 0;
}
double max(double a, double b, double c, double d = 3.1415926)
{
cout << "pi: " << d << endl;
if (a > b && a > c)
return a;
else if (b > a && b > c)
return b;
else
return c;
}

int max(int a, int b, int c, int d = 20)
{
cout << "d: " << d << endl;
if (a > b && a > c)
return a;
else if (b > a && b > c)
return b;
else
return c;
}

Visual Studio显示严重性代码描述文件行错误C2572"max":重新定义默认参数:参数1

非常感谢。

在函数原型中只指定一次的默认值:

int max(int a, int b, int c, int d = 20);
int main()
{
// code...
}
int max(int a, int b, int c, int d)
{
// code...
}

double版本相同