Jest to konwencja, ale zależy również od konkretnych potrzeb. Na przykład, jeśli piszesz bibliotekę, którą chcesz, aby funkcja była szybka (inline) i projektujesz bibliotekę, aby inni mogli ją używać jako zwykłą bibliotekę header only
, wtedy możesz napisać cały swój kod w pliku nagłówkowym (s) samo.
Z drugiej strony; jeśli piszesz bibliotekę, która będzie połączona statycznie lub dynamicznie i próbujesz hermetyzować dane wewnętrznego obiektu od użytkownika. Twoje funkcje - funkcje należące do klasy itp. Zostałyby zapisane w taki sposób, że robią to, co powinny, w taki sposób, aby użytkownik kodu bibliotecznego nie musiał się martwić o szczegóły rzeczywistej implementacji tej części, która jest ukryta. Wszystko, co powinni wiedzieć o swoich funkcjach, a klasy to ich interfejsy. W ten sposób będziesz miał zarówno pliki nagłówkowe, jak i pliki implementacyjne.
Jeśli umieścisz definicje funkcji w plikach nagłówków wraz z ich deklaracjami, będą one wstawiane i powinny działać szybciej, ale twój plik wykonywalny będzie większy i będzie musiał być skompilowany za każdym razem. Szczegóły implementacji są również narażone na działanie użytkownika.
Jeśli umieścisz definicje funkcji w pliku kodu powiązanym z nagłówkiem, nie będą one wstawiane, Twój kod będzie mniejszy, może działać wolniej, ale powinieneś je skompilować tylko jeden raz. Szczegóły implementacji są ukrywane i oddzielane od użytkownika.
To tylko konwencja. –
@JakeFreeman: Konwencje często mają powody. W tym przypadku istnieje wiele naprawdę dobrych powodów. –
Zobacz: https://stackoverflow.com/questions/875479/what-is-the-difference-between-a-cpp-file-and-a---f- file –