声明和定义

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

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


声明就像告诉机器你想说的那样,变量“x”存在,你也可以设置它。

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

(可能是错的,这是我想到的方式)


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

void foo();

你告诉编译器该函数的名称及其参数(本例中没有)和返回类型,以便它可以正确地编译调用函数 - 即使函数的实际代码还没有提供。 在程序的其他地方,也许在不同的源文件中,您提供了一个定义:

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

如果你定义的东西还没有被声明,定义也可以作为一个声明。

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

class Blah {
public:
  void blah();

private:
  int x;
};

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

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

链接地址: http://www.djcxy.com/p/40633.html

上一篇: Declare And Define

下一篇: How are extern variables defined?