可能重复:
What is the difference between a definition and a declaration?
我对变量的这两个术语感到非常困惑。在一些书中它似乎是相同的,但在一些书中它是完全不同的。 任何人都可以告诉我,变量或函数声明的含义是什么,变量或函数定义的含义是什么?
答案 0 :(得分:1)
声明就像告诉机器你要说的那样,变量“x”存在,你也可以把它设置为某种东西。
定义变量是将其设置为某种东西。
(可能是错的,这是我想到的方式)
答案 1 :(得分:0)
声明告诉编译器存在某些东西,但不一定提供其代码或值。例如,如果声明一个函数:
void foo();
你告诉编译器函数的名称及其参数(在本例中为none)和返回类型,以便它可以正确地编译调用到函数中 - 即使函数是尚未提供实际代码。在程序的其他地方,也许在不同的源文件中,您提供了一个定义:
void foo() {
std::cout << "Hello, world!" << std::endl;
}
如果你所定义的东西还没有被宣布,那么定义也可以作为声明。
通常,您将定义放在源文件中,并在头文件中声明,以便除了包含定义的文件之外,其他源文件可以“看到”它们。但是,在C ++中,当你编写一个类时:
class Blah {
public:
void blah();
private:
int x;
};
这是该类的定义,其中包含其成员的声明。类定义通常放在头文件中,但成员函数的定义通常不会(除模板和内联函数外)。
您可能会发现阅读this answer about how compilation and linking works信息丰富。