Source files
SF.5
Файл `.cpp` должен включать заголовочный файл (файлы), определяющий его интерфейс
Причина
Это позволяет компилятору выполнять раннюю проверку согласованности.
Пример (плохой)
// foo.h:
void foo(int);
int bar(long);
int foobar(int);
// foo.cpp:
void foo(int) { /* ... */ }
int bar(double) { /* ... */ }
double foobar(int);
Ошибки не будут обнаружены до стадии компоновки для программы, вызывающей bar или foobar.
Пример
// foo.h:
void foo(int);
int bar(long);
int foobar(int);
// foo.cpp:
#include "foo.h"
void foo(int) { /* ... */ }
int bar(double) { /* ... */ }
double foobar(int); // error: wrong return type
Ошибка типа возвращаемого значения для foobar теперь будет обнаружена немедленно при компиляции foo.cpp. Ошибка типа аргумента для bar не может быть обнаружена до стадии компоновки из-за возможности перегрузки, но систематическое использование файлов .h повышает вероятность того, что она будет обнаружена раньше разработчиком.
Контроль
???