Video: Review: Quiz 0 2024
Constructorul este o funcție specială pe care C ++ o invocă automat atunci când un obiect este creat pentru a permite obiectului să se inițieze. Există două variante specifice ale constructorului, cunoscute sub numele de constructori de mutări și .
Un constructor de copiere este constructorul folosit de C ++ pentru a face copii ale obiectelor. Acesta poartă numele X:: X (const X &), unde X este numele clasei. Asta este, este constructorul clasei X, care are drept argument o referință la un obiect de clasă X . Acest lucru suna cu adevarat inutil, dar trebuie doar sa iei un minut pentru a explora de ce C ++ are nevoie de asemenea beasties.
Gândiți-vă pentru un moment despre ceea ce se întâmplă când apelați o funcție precum:
void fn (Student fs) {// … același scenariu; argument diferit …} int main (int args, char * pArgs []) {Student ms; fn (ms); return 0;}
În apelul către fn (), C ++ transmite o copie a obiectului ms și nu obiectul propriu-zis.
Acum, ia în considerare ce înseamnă să creați o copie a unui obiect. Mai întâi, este necesar ca un constructor să creeze un obiect, chiar și o copie a unui obiect existent. C ++ ar putea crea un constructor de copiere implicit care copiază obiectul existent în noul obiect câte un byte la un moment dat.
Asta e ceea ce limbile mai vechi cum ar fi C. Dar dacă clasa nu dorește o copie simplă a obiectului? Ce se întâmplă dacă este necesar altceva? (Ignoră "de ce?" Pentru puțin timp.) Clasa trebuie să poată specifica exact cum trebuie creată copia.
Astfel, C ++ utilizează un constructor de copiere în exemplul precedent pentru a crea o copie a obiectului ms în stivă în timpul apelului funcției fn (). Acest constructor de copii special ar fi Student:: Student (Student &) - spune că de trei ori rapid.