Parce que ta fonction ne sera pas toujours dans le même fichier.
En C++, on sépare en général la déclaration de la définition/implémentation. On écrit un fichier header en .h dans lequel on déclare les classes, les fonctions que l'on veut créer, puis on définit/implémente ces classes dans des fichiers .cpp. En quelque sorte, le fichier header indique ce qui est disponible, le fichier cpp indique comment ce qui est disponible fonctionne.
Comme en python, tu peux vouloir séparer ton code en "programme principal" et "outils". Par exemple, dans le code que tu postes, tu fais appel aux flux d'entrée/sortie standards (le flux de sortie ici), mais tu n'as pas implémenté la classe qui te permet de faire ça. À la place, tu as fais un "#include <iostream>" qui signifie "cherche dans les emplacements standards le fichier header iostream.h (ou .hpp) et inclus le ici". Ce fichier contient toutes les déclarations de ce que tu peux faire (les fonctions, etc. disponibles). Cela suffit au compilateur pour reconnaître ce symbole dans ton code (quand tu appelles cout) et savoir que ce bout de code doit être complété plus tard, lors de l'édition de liens.
Pour résumer (quand je dis "fonction" dans le texte suivant, comprendre "fonctions, classes, etc.") :
- soit tu déclares et définis toutes tes fonctions avant le code où elles sont appelées. Dans ce cas, il me semble que le prototype n'est pas nécessaire.
- soit tu déclares tes fonctions avant le code qui y fait appel et tu les définis après. Dans ce cas, tu dis au compilateur : "t'inquiète copain, ma fonction nombreDeSecondes que j'utilise dans main() n'est pas un symbole inconnu, c'est définis ailleurs".
- soit tu définis ton code dans un autre fichier, tu le déclares dans un fichier header, puis tu inclus ce dernier dans ton fichier principal pour que le compilateur sache que les fonctions que tu appelles ensuite ne sont pas des erreurs de syntaxe / symboles indéfinis.
- Et non, on n'inclue pas directement les fichiers .cpp, une bonne explication du processus en anglais ici : https://softwareengi...luding-only-the