Qual é a diferença entre declaração e definição em C++?
Olá! Comecei a estudar C++ recentemente e fico constantemente confuso com os termos "declaração" (declaration) e "definição" (definition). Parecem soar parecidos, mas o compilador reclama de coisas diferentes.
Aqui está um exemplo que me confundiu. Escrevi este código:
```cpp
#include
int x; // Isto é uma declaração ou definição?
extern int y; // E isto?
void foo(); // E aqui?
int main() {
std::cout << x;
return 0;
}
void foo() {
// alguma implementação
}
```
Se eu remover `void foo() { ... }` e deixar apenas `void foo();`, o compilador dará um erro de linkagem. Mas se eu escrever `int x;` sem `extern`, tudo funciona. Por que isso? Em quais casos `int x;` é uma declaração e em quais é uma definição? E o que é ODR (One Definition Rule)? Explique, por favor, de forma simples, com exemplos, para que eu não fique mais confuso.
<<>>
Diferença chave: a declaração informa ao compilador "algo existe", enquanto a definição — "é assim que se parece"
A diferença entre declaraçã
No answers yet.
Faça login para deixar uma resposta
Blogs