2012-02-05 31 views
9

Eventuali duplicati:
What does a colon following a C++ constructor name do?Struct Constructor Sintassi

ho trovato l'esempio di seguito in linea tuttavia la sintassi per il costruttore mi confonde un po 'in particolare il: simbolo. Qualcuno potrebbe darmi una breve spiegazione? Grazie.

struct TestStruct { 
    int id; 
    TestStruct() : id(42) 
    { 
    } 
}; 
+0

possibile duplicato (http://stackoverflow.com/questions/1272680/what-does-a -colon-dopo-ac-costruttore-nome-do). Vedi anche l'elenco dei duplicati [qui] (http://stackoverflow.com/questions/3504215/what-does-the-colon-mean-in-a-constructor) –

risposta

20

Il costruttore inizializza id-42 quando si chiama. Si chiama elenco di inizializzazione.

Nel tuo esempio, è equivalente a

struct TestStruct { 
    int id; 
    TestStruct() 
    { 
     id = 42; 
    } 
}; 

È possibile farlo con diversi membri nonché

struct TestStruct { 
    int id; 
    double number; 
    TestStruct() : id(42), number(4.1) 
    { 
    } 
}; 

E 'utile quando solo lo scopo della tua costruttore è in fase di inizializzazione variabili membro

struct TestStruct { 
    int id; 
    double number; 
    TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { } 
}; 
+1

"La stessa cosa" è un po 'sprezzante, e probabilmente equo ingannevole. –

+0

Concordato e modificato :) – Vache

+4

Cool, grazie, ma non è solo "utile", ma è una necessità assoluta per le variabili che devono essere inizializzate in modo non banale, come i sottooggetti di base, le costanti o i riferimenti. –