Sobes.tech
Junior — Middle

In welke gevallen wordt de kopieerconstructor voor een object in een programmeertaal aangeroepen?

sobes.tech AI

Antwoord van AI

In C++ wordt de copy-constructeur aangeroepen in de volgende gevallen:

  • Bij het initialiseren van een object met een ander object van hetzelfde type, bijvoorbeeld:

    MyClass a;
    MyClass b = a; // aanroep van de copy-constructeur
    
  • Bij het doorgeven van een object als waarde aan een functie:

    void func(MyClass obj) { /*...*/ }
    func(a); // kopie van het object bij de aanroep
    
  • Bij het retourneren van een object als waarde uit een functie:

    MyClass func() {
      MyClass temp;
      return temp; // kopie bij het retourneren
    }
    
  • Bij het toewijzen van een object aan een ander van hetzelfde type (als de toewijzingsoperator niet wordt gebruikt):

    b = a; // hier wordt de toewijzingsoperator aangeroepen, niet de copy-constructeur
    

Het is belangrijk op te merken dat moderne compilers de kopie kunnen optimaliseren (Copy Elision), maar conceptueel wordt de copy-constructeur in deze situaties aangeroepen.