Quelle est la différence entre déclaration et définition en C++ ?
Bonjour à tous ! Je viens de commencer à apprendre le C++ et je me suis embrouillé avec les termes "declaration" et "definition". Les deux semblent liés à la création de variables et de fonctions, mais je ne comprends pas la différence fondamentale.
Par exemple, j'écris ce code :
```cpp
int x; // Est-ce une declaration ou une definition ?
extern int y; // Et ça ?
void foo(); // Et ça ?
void foo() { } // Et ça ?
```
Quand j'écris `int x;` à l'intérieur d'une fonction, le compilateur crée une variable et lui alloue de la mémoire. Mais quand j'écris `extern int y;`, le programme ne compile pas si je n'ajoute pas `int y;` ailleurs. Pourquoi ? Quelle est la logique ?
J'ai aussi entendu qu'une declaration peut être répétée, mais pas une definition. En pratique, je reçois une erreur "multiple definition" si j'écris `int x;` deux fois dans la portée globale. Par contre, si j'écris `extern int x;` deux fois, ça fonctionne. Expliquez-moi, s'il vous plaît, comment cela fonctionne en termes simples, avec des exemples. Merci d'avance !