Cześć :)
Mam takie pytanko:
Mam klasę, która ma kilka wskaźników do tablic co prowokuje do przeładowania operatora przypisania ;)
Klasa w uproszczeniu wygląda mniej więcej tak:
class klasa
{
public:
klasa(){tablica= nullptr;}
~klasa(){if(tablica) delete[] tablica;
int size;
double* tablica;
int zmienna1;
double zmienna2;
char zmienna3;
//itd;
};
W książce zaleca się najpierw usunięcie już zadeklarowanych tablic i utworzenie ich na nowo a następnie przypisanie im wartości i skopiowanie pozostałych zmiennych.
Zastanawiam się jednak czy nie można pójść troszkę na skróty i zrobić taki "myczek" w funkcji operatora przypisania ;)
klasa& operator=(const klasa& copy)
{
*this = copy; //skopiowanie wszystkich zmiennych tradycyjną metodą (?!?)
if(tablica) delete[] tablica;
tablica = new double[size]; //nowy rozmiar już powinien być w tym obiekcie ;)
for(int i=0; i<size; i++)
tablica[i] = copy.tablica[i];
}
Dzięki temu ograniczamy się tylko do utworzenia nowej tablicy i przepisania jej elementów. Nie musimy natomiast przepisywać wszystkich pozostałych zmiennych, które zostaną automatycznie przekopiowane tradycyjną metodą.
Czy są jakieś przeciwwskazania przed takim podejściem?
Z góry dziękuję za rozjaśnienie moich wątpliwości ;-)