Prohlášení, definice, inicializace v C, C ++, C #, Java a Python

hlasů
10

Co znamenají pojmy znamenají v každém z výše uvedených jazyků? Proč jazyky se liší (všude tam, kde tomu tak je, pokud je to vůbec dělají) v tomto ohledu?

Položena 21/11/2008 v 20:01
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
11

C / C ++:

Prohlášení je prohlášení, že říká, že „tady je název něčeho a typu věc, která to je, ale nebudu vám říkat nic víc o tom.“

Definice je prohlášení, že říká, že „tady je název něčeho a co přesně to je.“ Pro funkce, bylo by to tělo funkce; pro globální proměnné, toto by byl překlad jednotka, v níž je proměnná zdržuje.

Inicializace je definice, kde je proměnná rovněž počáteční hodnotu. Některé jazyky automaticky inicializovat všechny proměnné do určité výchozí hodnoty, jako 0, false nebo null. Někteří (jako C / C ++) ne ve všech případech: všechny globální proměnné jsou default-inicializován, ale lokální proměnné v zásobníku a dynamicky přidělené proměnných na haldě nejsou výchozí inicializaci - mají nedefinovány obsah, takže je nutné explicitně inicializovat jim. C ++ má také výchozí konstruktor, což je celá nother může červů.

Příklady:


// 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
};

Nejsem tak obeznámen s jinými jazyky, které tázán, ale věřím, že nedělají moc rozdíl mezi deklarací a definicí. C # a Java mají výchozí inicializace pro všechny objekty - vše se inicializuje na 0, false nebo null, pokud není explicitně jej inicializovat. Python je ještě více laxní, protože proměnné nemusí být prohlášena před tím, než jsou zvyklí. Vzhledem k tomu, vázání jsou vyřešeny za běhu, není skutečná potřeba deklarace funkcí, a to buď.

Odpovězeno 21/11/2008 v 20:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more