Video: ɆǤƗⱣŦØ,ĦȺŁŁȺƵǤØS ꝖᵾɆ ȻȺMɃƗȺɌØN ŁȺ ĦƗSŦØɌƗȺ,ɆǤɎⱣŦ,MØMƗȺS- ĐØȻᵾMɆNŦȺŁɆS 2024
Il costruttore è una funzione speciale che C ++ richiama automaticamente quando viene creato un oggetto per consentire all'oggetto di inizializzarsi. Esistono due varianti del costruttore note come copy e move constructors.
Un costruttore di copie è il costruttore che C ++ usa per creare copie di oggetti. Porta il nome X:: X (const X &), dove X è il nome della classe. Cioè, è il costruttore della classe X, che prende come argomento un riferimento a un oggetto di classe X . Sembra davvero inutile, ma ci vuole solo un minuto per capire perché il C ++ ha bisogno di simili bestie.
Pensa per un momento a cosa succede quando chiami una funzione come la seguente:
void fn (Student fs) {// … stesso scenario; argomento differente …} int main (int argcs, char * pArgs []) {Student ms; fn (ms); return 0;}
Nella chiamata a fn (), C ++ passa una copia dell'oggetto ms e non l'oggetto stesso.
Ora considera cosa significa creare una copia di un oggetto. Per prima cosa, ci vuole un costruttore per creare un oggetto, anche una copia di un oggetto esistente. C ++ potrebbe creare un costruttore di copie predefinito che copia l'oggetto esistente nel nuovo oggetto un byte alla volta.
Questo è ciò che le lingue più vecchie come C fanno. Ma cosa succede se la classe non vuole una semplice copia dell'oggetto? Cosa succede se qualcos'altro è richiesto? (Ignorare per un po 'il "perché?"). La classe deve essere in grado di specificare esattamente come deve essere creata la copia.
Quindi, C ++ utilizza un costruttore di copie nell'esempio precedente per creare una copia dell'oggetto ms nello stack durante la chiamata della funzione fn (). Questo particolare costruttore di copia sarebbe Studente: Studente (Studente e) - Dillo tre volte velocemente.