Я новичок в C ++, и у меня возникли проблемы. Я буду очень признателен, если кто-нибудь мне поможет. Мой англи sh не очень хороший. Пишу код в 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
Большое спасибо.