C++/Konstruktor i destruktor: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Gang65 (dyskusja | edycje)
Gang65 (dyskusja | edycje)
Linia 88:
 
Jeżeli nie zaimplementujemy konstruktora kopiującego, kompilator zrobi to automatycznie. Konstruktor taki będzie po prostu tworzył drugą instancję wszystkich pól obiektu. Możemy go jawnie wywołać np. tak:
<source lang="cpp">
Miesiac miesiac(12,2005);
Miesiac kopia(miesiac); //tu zostanie wywołany konstruktor kopiujący
/* obiekt kopia będzie miał taką samą zawartość jak obiekt miesiąc */
</source>
 
Jeżeli chcemy sami zaimplementować '''konstruktor kopiujący''' musimy zadeklarować go jako '''konstruktor''' o jednym parametrze będącym referencją na obiekt tej samej klasy.
<source lang="cpp">
class Miesiac
{
Linia 104 ⟶ 107:
}
};
</source>
 
{{Porada|1=Jeżeli dokonujemy w konstruktorze alokacji pamięci, np:
<source lang="cpp">
class Rok
{
Linia 116 ⟶ 120:
}
};
</source>
to nie możemy się się zdać na '''konstruktor kopiujący''' tworzony niejawnie. Jeżeli tak zrobimy, to w obiekcie stworzonym przez '''konstruktor kopiujący''' pole ''miesiace'' będzie wskazywać na ten sam fragment pamięci, co w obiekcie wzorcowym. Jeżeli nie jest to zamierzony efekt (a zwykle nie jest) musimy sami zaimplementować konstruktor kopiujący, np. tak:
 
<source lang="cpp">
class Rok
{
Linia 136 ⟶ 143:
};
}}
</source>
 
=== Destruktor ===