声明并定义

时间:2012-11-01 04:57:39

标签: c++ c

  

可能重复:
  What is the difference between a definition and a declaration?

我对变量的这两个术语感到非常困惑。在一些书中它似乎是相同的,但在一些书中它是完全不同的。 任何人都可以告诉我,变量或函数声明的含义是什么,变量或函数定义的含义是什么?

2 个答案:

答案 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信息丰富。