2008-11-21 86 views

回答

11

C/C++:

一个声明是一个语句“这里是什么名称,它是型的事,但我不会告诉你这事多”。

A 定义是一个声明,说“这是什么东西的名称,它到底是什么”。对于函数,这将是函数体;对于全局变量,这将是变量所在的翻译单元。

初始化是一个定义,其中变量也被赋予一个初始值。某些语言会自动将所有变量初始化为默认值,如0,false或null。有些(如C/C++)并不是在所有情况下都是这样:所有全局变量都是默认初始化的,但堆栈上的局部变量和堆中动态分配的变量不是默认初始化的 - 它们具有未定义的内容,因此您必须显式初始化他们。 C++也有默认的构造函数,它是一个蠕虫的整体。

例子:


// In global scope: 
extern int a_global_variable; // declaration of a global variable 
int a_global_variable;   // definition of a global variable 
int a_global_variable = 3;  // definition & initialization of a global variable 

int some_function(int param); // declaration of a function 
int some_function(int param) // definition of a function 
{ 
    return param + 1; 
} 

struct some_struct; // declaration of a struct; you can use pointers/references to it, but not concrete instances 
struct some_struct // definition of a struct 
{ 
    int x; 
    int y; 
}; 

class some_class; // declaration of a class (C++ only); works just like struct 
class some_class // definition of a class (C++ only) 
{ 
    int x; 
    int y; 
}; 

enum some_enum; // declaration of an enum; works just like struct & class 
enum some_enum // definition of an enum 
{ 
    VALUE1, 
    VALUE2 
}; 

我不熟悉你问其他的语言,但我相信他们没有太大的声明和定义之间的区别。 C#和Java对所有对象都有默认初始化 - 如果你没有明确地初始化它,所有东西都被初始化为0,false或null。 Python变得更加松懈,因为变量在使用之前不需要声明。由于绑定在运行时被解析,所以也不需要声明函数。