Что является хорошим тоном в c++?

Смотрю видео по с++ и автор объясняет работу функций и пишет для наглядности вот такой код:
#include <iostream>
using namespace std;
int sum(int,int);
int main()
{
	int num1;
	int num2;
	cout << "Введите первое число: ";
	cin >> num1;
	cout << "Введите второе число: ";
	cin >> num2;
	cout << sum(num1,num2) << endl;
	return 0;
}
int sum(int number1, int number2)
{
	return number1 + number2;
}

Но работать также будет и второй вариант:
#include <iostream>
using namespace std;
int sum(int number1, int number2)
{
	return number1 + number2;
}
int main()
{
	int num1;
	int num2;
	cout << "Введите первое число: ";
	cin >> num1;
	cout << "Введите второе число: ";
	cin >> num2;
	cout << sum(num1,num2) << endl;
	return 0;
}

Так вот вопрос - хороший тон создавать функцию заранее, а после описывать ее (как в первом варианте) или же можно сразу описывать функцию (как во втором)?
  • Вопрос задан
  • 338 просмотров
Решения вопроса 3
leto2015
@leto2015
Веб-разработчик
Для чего нужен именно прототип? Почему нельзя ограничиться использованием одного описания функции? Прототип стал необходим после того, как стандарты языка С изменились таким образом, что перед вызовом функции в файле необходимо каким либо образом ее описать. Проблема состоит в том, что имя функции имеет глобальную область видимости (если ее описание находится вне всяких локальных областей). Допустим, что описание функции находится в отдельном исходном файле. Также допустим, что необходимо осуществить вызов этой же функции в нескольких других исходных файлах. Если нет прототипа, то в каждый такой исходный файл необходимо включить полное описание функции. Компилятор будет интерпретировать это как переопределение. Если же мы используем прототип, то мы можем включать этот прототип в столько исходных файлов, сколько нам необходимо.
Взято Тут
Ответ написан
Комментировать
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Знать оба способа положено!

Способ "Сначала объявление, а потом где-нибудь определение" позволяет:

* Создавать так называемые "хидера" или файлы-заголовки, в которых пишутся как раз таки только и только объявления функций.
* Писать код не задумываясь о том, где именно будет определно тело функции. Главное чтобы оно было в одной и той же единице трансляции или доступна ссылка из другой.

Начинающим рекомендуют как раз-таки именно такой способ. А спустя время, когда у них развивается чувство кода, прекрассного, т.е. навыка писать достаточно структурированный и ясный код, то они сами того не замечая переходят на второй способ "Только тело без каких-либо предварительных объявлений" там где это возможно.
Ответ написан
Комментировать
Olej
@Olej
инженер, программист, преподаватель
хороший тон создавать функцию заранее, а после описывать ее (как в первом варианте) или же можно сразу описывать функцию (как во втором)?

Что в лоб - что по лбу.

Вообще, первичный, первоначальный - как раз способ, который вы назвали 2-й: в C (откуда вырос C++) каждый объект программы должен быть описан (видим) прежде, чем он будет использован. И тогда способ 2-й более естественный.

То, что вы назвали как способ 1-й - это предварительное описание функции, прототип. Поскольку в C (а затем и в C++ до самого последнего времени) не было выделено таких понятий как модуль, пакет, библиотека (в разных языках это называется по-разному), то в многофайловом приложении у вас просто не будет другого способа совместного использования функций, как использовать прототипы, которые и помещаются в отдельные файлы определений (.h, хэдер-файлы). Это и есть предварительные описания, которые вы и выделили как способ №1.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы