Если я создаю прототип функции над основной функцией в моем коде, должен ли я включать все параметры, которые должны быть заданы? Есть ли способ, как я могу просто прототипировать только функцию, чтобы сэкономить время, пространство и память?
Вот код, где я пришел с этим вопросом:
#include <iostream>
using namespace std;
int allesinsekunden(int, int, int);
int main(){
int stunden, minuten, sekunden;
cout << "Stunden? \n";
cin >> stunden;
cout << "Minuten? \n";
cin >> minuten;
cout << "Sekunden= \n";
cin >> sekunden;
cout << "Alles in Sekunden= " << allesinsekunden(stunden, minuten, sekunden) << endl;
}
int allesinsekunden (int h, int m, int s) {
int sec;
sec=h*3600 + m*60 + s;
return sec;
}
«Если я прототипирую функцию выше основной функции в моем коде, должен ли я включать все параметры, которые должны быть заданы?»
Да, иначе компилятор не знает, как разрешено вызывать вашу функцию.
Функции могут быть перегружены в c ++, что означает, что функции с одинаковыми именами могут иметь разное количество и тип параметров. Такое название само по себе недостаточно отчетливо.
«Есть ли способ, как я могу просто прототипировать только функцию, чтобы сэкономить время, пространство и память?»
Нет. Почему, ты думаешь, это сохранит память?
Нет, потому что это добавит двусмысленности. В C ++ вполне возможно иметь две совершенно разные функции, которые отличаются только количеством и / или типом входных аргументов. (Конечно, в хорошо написанной программе функции этих функций должны быть связаны.)
int allesinsekunden(int, int, int)
{
//...
}
а также
int allesinsekunden(int, int)
{
//...
}
Если вы попытались «прототипировать» (объявить) один из них с
int allesinsekunden;
как бы компилятор узнал, какая функция была объявлена? В частности, как он сможет найти правильное определение для использования в main
?
Вы должны объявить полную подпись вашей функции, то есть имя, возвращаемое значение, все параметры с типами, их константность и т. Д.