2016-04-30 4 views
0

У меня есть небольшой вопрос, как я могу инициализировать аргументы по умолчанию в функции?C++ Перегрузка с параметрами по умолчанию

#include <iostream> 
    #include <cmath> 

    using namespace std; 
    float area(float a, float b, float c); 
    float area(float a, float b=a, float c =a); 


    int main() { 

     cout << area(10) << endl; 
     return 0; 
    } 

float area(float a, float b, float c){ 
    return a*b*c 
    } 

Я получаю ошибки, как я могу имповировать правильно?

+0

Пожалуйста выкладывают ошибки, которые вы получаете. Кроме того, прочитайте [this] (http://stackoverflow.com/help/how-to-ask) сообщение о том, как задавать лучшие вопросы, которые помогут людям дать вам лучшие ответы. Наконец, [этот учебник] (http://www.learncpp.com/) - отличное место для начала изучения C++. –

+0

Обратите внимание, что только ошибка здесь заключается в том, что в качестве параметра по умолчанию используется локальная переменная 'a'. Поскольку разрешено несколько объявлений, если вы замените 'a' тем, что может быть оценено при вызове функции, все будет работать нормально, но у вас будет только 1 функция. – PcAF

ответ

2

Вы собираетесь должны использовать перегрузки вместо параметров по умолчанию:

#include <iostream> 
#include <cmath> 

using namespace std; 
float area(float a, float b, float c); 
float area(float a); 

int main() { 

    cout << area(10) << endl; 
    return 0; 
} 

float area(float a, float b, float c){ 
    return a*b*c; 
} 
float area(float a){ 
    return area(a,a,a); 
} 
1

Если вы хотите значение по умолчанию для b и c быть значение a, то вы должны использовать перегрузки:

float area(float a, float b, float c){ 
    return a*b*c 
} 
float area(float a) { 
    return area(a, a, a); 
} 

C++ не позволяет использовать параметры в качестве аргументов по умолчанию. Таким образом, это

float area(float a, float b=a, float c =a); 
          ^^   ^^ 

является ошибкой.

0

В C++

вы должны создавать прототипы и реализовать код только одного метода, включая дополнительные параметры и значения по умолчанию является необязательный параметр пропущен должна быть постоянным и не неизвестное значение ...

float area(float a, float b=0, float c=0); 
    int main() { 
     cout << area(10) << endl; 
     return 0; 
    } 

float area(float a, float b=-1, float c =-1);){ 
    if(b==-1 ||c==-1) 
    { 
     return a*a*a; 
    }else 
    { 
     return a*b*c; 
    } 
} 
Смежные вопросы