Sobes.tech
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.