Junior — Middle
V ktorých prípadoch v programovacom jazyku dôjde k volaniu konštruktora kopírovania pre objekt?
sobes.tech AI
Odpoveď od AI
V C++ sa volá konštruktor kopírovania v týchto prípadoch:
-
Pri inicializácii objektu iným objektom toho istého typu, napríklad:
MyClass a; MyClass b = a; // volanie konštruktora kopírovania -
Pri odovzdávaní objektu hodnotou do funkcie:
void func(MyClass obj) { /*...*/ } func(a); // kopírovanie objektu pri volaní -
Pri návrate objektu hodnotou z funkcie:
MyClass func() { MyClass temp; return temp; // kopírovanie pri návrate } -
Pri priraďovaní objektu inému objektu toho istého typu (ak sa nepoužíva operátor priradenia):
b = a; // tu sa volá operátor priradenia, nie konštruktor kopírovania
Je dôležité poznamenať, že moderné prekladače môžu optimalizovať kopírovanie (Copy Elision), ale koncepčne sa volá konštruktor kopírovania v týchto situáciách.