C++/Przeciążanie operatorów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Gbaz (dyskusja | edycje)
operatory post i preinkrementacji - sam nagłówek
Gbaz (dyskusja | edycje)
→‎Operatory post- i pre- inkrementacji: - dopisanie teorii w oparciu o "Symfonię C++ standard tom II"
Linia 272:
</source>
Autor "Symfonii C++", na której się opieram pisząc o new i delete, stanowczo odradza przeciążanie tego operatora globalnie
== Operatory post- i pre- inkrementacji, oraz dekrementacji ==
Tutaj umieszczę same przykłady:
<source lang="cpp">
class Foo {
 
int i;
public:
Foo(int j): i(j) {}
Foo & operator++() { // preinkrementacje, czyli najpierw zwiększamy a potem zwracamy
++i;
return *this;
}
Foo operator++(int) { // specjalny zapis do postinkrementacji
Foo kopia = (*this);
++i;
return kopia; // zwracamy kopię, a nie oryginał
}
};
</source>
Operatory dekrementacji analogicznie do inkrementacji.
Należy mieć na uwadze, że przy własnych operatorach potrzebny jest "działający jak chcemy" operator= lub konstruktor kopiujący, jeśli go nie napiszemy kompilator wygeneruje go automatycznie, natomiast jeśli nasza klasa ma wewnątrz siebie wskaźniki tak w skopiowanym obiekcie będą one wskazywały na ten sam adres co wskaźniki oryginału