Junior — Middle
Milyen esetekben történik a másoló konstruktor hívása egy programozási nyelvben?
sobes.tech MI
Válasz az MI-től
C++-ban a másoló konstruktor a következő esetekben hívódik:
-
Amikor egy objektumot ugyanazon típusú másik objektummal inicializálunk, például:
MyClass a; MyClass b = a; // másoló konstruktor hívása -
Amikor egy objektumot érték szerint adunk át egy függvénynek:
void func(MyClass obj) { /*...*/ } func(a); // az objektum másolása a híváskor -
Amikor egy objektumot érték szerint adunk vissza egy függvényből:
MyClass func() { MyClass temp; return temp; // másolás visszatéréskor } -
Amikor egy objektumot egy másiknak ugyanazon típusban érték szerint rendelünk hozzá (ha nem használjuk az értékadás operátort):
b = a; // itt az értékadás operátor hívódik, nem a másoló konstruktor
Fontos megjegyezni, hogy a modern fordítók optimalizálhatják a másolást (Copy Elision), de elméletileg ezekben az esetekben a másoló konstruktor hívódik.