В какой файл мы помещаем функцию, не являющуюся членом C++?
Какова обычная практика, когда речь заходит о функциях, не являющихся членами в C++? Помещаем ли мы их в main.cpp или в заголовочный файл или в файл реализации класса, или мы создаем для него отдельный файл.cpp? Если обычной практикой является создание отдельного файла, то куда мы помещаем заголовок функции, не являющейся членом (прототип)? Это идет только в main.cpp или в обоих из них?
3 ответа
Я бы сказал, что вы не должны относиться к функциям, не являющимся членами, иначе, чем к классам, функциям-членам и другим символам.
Вы должны создать отдельный заголовочный файл .h
и соответствующий исходный файл .cpp
для каждого логического компонента (модуля) вашего приложения.
Все общедоступные символы должны быть объявлены / определены в заголовочном файле (будь то функции, не являющиеся членами или иным образом), а все непубличные символы и все необходимые определения должны быть в исходном файле.
Короче говоря, группируйте по логическим компонентам программы, а не по типу символа / функции.
Ваш класс должен иметь свой собственный файл.cpp. Функции, не являющиеся членами, должны помещаться в другие файлы (все вместе или сгруппированные по сходству). Это соглашение здесь, в Северной Америке, но соглашения отличаются. Прототип просто должен войти в заголовочный файл, чтобы вы могли включать его везде, где вы его используете.
Общая идея в псевдокоде:
if (it will be used in other cpp files)
put the declaration in a header file.
implement it in a header or a cpp file.
else
if (only need it in some functions in a header file)
if (it's a function more than N line ) // please define this N in your mind
declare it in the same header and implement it in a cpp file
else
put it in the same header file
else // used in cpp only
put it in the cpp file
Пока он компилируется, вы должны учитывать удобочитаемость (легко читаемую) и доступность (легко найти и отладить).