可能重复:
定义和声明有什么区别?
我对变量的这两个术语感到非常困惑。在某些书中,它似乎是相同的,但在某些书中,它却完全不同。谁能告诉我,变量或函数的声明是什么意思,变量或函数的定义是什么意思?
可能重复:
定义和声明有什么区别?
我对变量的这两个术语感到非常困惑。在某些书中,它似乎是相同的,但在某些书中,它却完全不同。谁能告诉我,变量或函数的声明是什么意思,变量或函数的定义是什么意思?
声明就像告诉机器你想要说的,例如,变量“x”存在,你也可以将它设置为某个东西。
定义一个变量就是将它设置为某种东西。
(可能是错的,我是这么想的)
声明告诉编译器存在某些东西,但不一定提供其代码或值。例如,如果您声明一个函数:
void foo();
你告诉编译器函数的名称,它的参数(在这种情况下没有)和返回类型,以便它可以正确编译对函数的调用- 即使尚未提供函数的实际代码。在您的程序的其他地方,可能在不同的源文件中,您提供了一个定义:
void foo() {
std::cout << "Hello, world!" << std::endl;
}
如果您正在定义的事物尚未声明,则定义也可以作为声明。
通常,您将定义放在源文件中,将声明放在头文件中,以便它们可以被包含定义的源文件之外的其他源文件“看到”。但是,在 C++ 中,当您编写一个类时:
class Blah {
public:
void blah();
private:
int x;
};
这是类的定义,其中包含其成员的声明。类定义通常放在头文件中,但成员函数的定义通常不放在头文件中(除了模板和内联函数)。
您可能会发现阅读此关于编译和链接工作原理的答案会很有帮助。