Avatar ·

Qual é a diferença entre declaração e definição em C++?

Olá a todos! Acabei de começar a estudar C++ e fiquei confuso com os termos "declaração" (declaration) e "definição" (definition). Parece que ambos estão relacionados à criação de variáveis e funções, mas não entendo qual é a diferença fundamental. Por exemplo, escrevo o seguinte código: ```cpp int x; // Isso é declaração ou definição? extern int y; // E isso? void foo(); // E isso? void foo() { } // E isso? ``` Quando escrevo `int x;` dentro de uma função, o compilador cria a variável e aloca memória para ela. Mas quando escrevo `extern int y;`, o programa não compila se eu não adicionar `int y;` em algum outro lugar. Por que isso? Qual é a lógica aqui? Também ouvi dizer que a declaração pode ser repetida, mas a definição não. No entanto, na prática, recebo um erro "multiple definition" se escrever `int x;` duas vezes no escopo global. Mas se escrever `extern int x;` duas vezes, funciona. Expliquem, por favor, como isso funciona em palavras simples, com exemplos. Desde já, obrigado!

No answers yet.

Faça login para deixar uma resposta

Blogs