2012-11-01 144 views
-1

可能重复:
What is the difference between a definition and a declaration?声明和定义

我在这两个方面变量很困惑。在某些书中,它似乎是一样的,但在一些书中却完全不同。 谁能告诉我,变量或函数声明的含义是什么,变量或函数的定义是什么意思?

+0

确切的复制品。在提出问题之前使用堆栈溢出来搜索答案。 – dave

+0

okk ...我搜查了但没有得到那个链接那就是为什么我问.. – MouseCrasher

回答

1

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

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

(可能是错误的,这是我认为它的方式)

0

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

void foo(); 

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

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