-1

可能重复:
定义和声明有什么区别?

我对变量的这两个术语感到非常困惑。在某些书中,它似乎是相同的,但在某些书中,它却完全不同。谁能告诉我,变量或函数的声明是什么意思,变量或函数的定义是什么意思?

4

2 回答 2

1

声明就像告诉机器你想要说的,例如,变量“x”存在,你也可以将它设置为某个东西。

定义一个变量就是将它设置为某种东西。

(可能是错的,我是这么想的)

于 2012-11-01T04:59:33.970 回答
0

声明告诉编译器存在某些东西,但不一定提供其代码或值。例如,如果您声明一个函数:

void foo();

你告诉编译器函数的名称,它的参数(在这种情况下没有)和返回类型,以便它可以正确编译对函数的调用- 即使尚未提供函数的实际代码。在您的程序的其他地方,可能在不同的源文件中,您提供了一个定义:

void foo() {
  std::cout << "Hello, world!" << std::endl;
}

如果您正在定义的事物尚未声明,则定义也可以作为声明。

通常,您将定义放在源文件中,将声明放在头文件中,以便它们可以被包含定义的源文件之外的其他源文件“看到”。但是,在 C++ 中,当您编写一个类时:

class Blah {
public:
  void blah();

private:
  int x;
};

这是类的定义,其中包含其成员的声明。类定义通常放在头文件中,但成员函数的定义通常不放在头文件中(除了模板和内联函数)。

您可能会发现阅读此关于编译和链接工作原理的答案会很有帮助。

于 2012-11-01T05:09:26.940 回答