Video: Hvorfor verden har brug for din mission nu [ TIRSDAGS TUNE IN ] 2025
Konstruktøren er en speciel funktion, som C ++ automatisk påkalder, når et objekt er oprettet, så objektet kan initialisere sig selv. Der er to særlige variationer af konstruktøren kendt som kopi og bevægekonstruktorer.
En kopikonstruktør er konstruktøren, som C ++ bruger til at lave kopier af objekter. Den bærer navnet X:: X (const X &), hvor X er navnet på klassen. Det vil sige, det er konstruktøren i klassen X, , der som argument tager en henvisning til et objekt af klasse X . Det lyder virkelig ubrugeligt, men tag et øjeblik for at undersøge, hvorfor C ++ har brug for sådanne beasties.
Tænk et øjeblik om hvad der sker, når du kalder en funktion som følgende:
void fn (Student fs) {// … samme scenario; forskellige argumenter …} int main (int argcs, char * pArgs []) {Student ms; fn (ms); returner 0;}
I opkaldet til fn () overfører C ++ en kopi af objektet ms og ikke selve objektet.
Overvej nu hvad det betyder at oprette en kopi af et objekt. For det første tager det en konstruktør at skabe et objekt, endda en kopi af et eksisterende objekt. C ++ kunne oprette en standard kopikonstruktør, der kopierer det eksisterende objekt til det nye objekt en byte ad gangen.
Det er hvad ældre sprog som C gør. Men hvad nu hvis klassen ikke ønsker en simpel kopi af objektet? Hvad hvis der er noget andet nødvendigt? (Ignorer "hvorfor?" I et stykke tid.) Klassen skal kunne præcisere, hvordan kopien skal oprettes.
Således bruger C ++ en kopikonstruktør i det foregående eksempel for at lave en kopi af objektet ms på stakken under funktionskaldet fn (). Denne særlige kopikonstruktør ville være Student:: Student (Student &) - sig det tre gange hurtigt.