Video: Statistical Programming with R by Connor Harris 2025
Konstruktor je speciální funkce, která C ++ vyvolá automaticky při vytváření objektu, který dovoluje inicializaci objektu. Existují dvě konkrétní varianty konstruktoru, známé jako konstrukční prvky kopie a .
Konstruktor kopie je konstruktér, který C ++ používá k vytváření kopií objektů. Nese jméno X:: X (const X &), kde X je název třídy. To znamená, že je konstruktorem třídy X, , která má jako argument odkaz na objekt třídy X . Zní to to opravdu zbytečné, ale jen chvíli prozkoumat, proč C ++ potřebuje takové nápady.
Přemýšlejte o tom, co se stane, když zavoláte funkci, jako je následující:
void fn (Student fs) {// … stejný scénář; … argument int {int argcs, char * pArgs []) {Student ms; fn (ms); návrat 0;}
Při volání fn (), C ++ předá kopii objektu ms a ne samotný objekt.
Nyní zvažte, co to znamená vytvořit kopii objektu. Za prvé, konstruktor vytvoří objekt, dokonce i kopii existujícího objektu. C ++ by mohl vytvořit výchozí kopii konstruktoru, který zkopíruje existující objekt do nového objektu jeden bajt najednou.
To je to, co starší jazyky jako C dělají. Ale co když třída nechce jednoduchou kopii objektu? Co když je třeba něco jiného? (Ignorovat "proč?" Na chvíli.) Třída musí být schopna přesně určit, jak má být kopie vytvořena.
C ++ tedy použije kopii konstruktoru v předchozím příkladu k vytvoření kopie objektu ms na zásobníku během volání funkce fn (). Tento konkrétní kopírovací konstruktér by měl být Student: Student (Student &) - říci, že třikrát rychle.
