May 6, 2024, Monday, 126

Przykładowe zadania do Laboratorium 5

From MJanik

Jump to: navigation, search

Zadanie 5 - Konstruktor kopiujący i przeciążanie operatorów

1. Konstruktor kopiujący.""

'Należy zdefiniować klasę człowiek (za wykładem):

class czlowiek{
char *imie; //skladniki klasy to wskazniki, NIE tablice
char *nazwisko; //kopiujac skladnik po skladniku robimy wierne kopie wskaznikow
public:         //pokazujacych na to samo miejsce w pamieci
czlowiek();
czlowiek(char*, char*);
czlowiek(const czlowiek &);
~czlowiek();
void wypiszCzlowieka();
void zmienNazwisko(char*);
};

Oraz wypełnić odpowiednie funkcje składowe (konstruktory oraz funkcje wypiszCzlowieka i zmienNaziwsko).


A następnie wykonać program:

int main() {
char i[100]= "Jan";
char n[100]= "Kowalski";
char r[100]= "Nowak";
czlowiek c1(i, n);
czlowiek c2(c1);
c1.przedstaw();
c2.przedstaw();
c1.zmiana(r);
c1.przedstaw();
c2.przedstaw();
return 1;
}


Jaki byłby wynik, gdybyśmy nie zdefiniowali konstruktora kopiującego? (Proszę sprawdzić, komentując odpowiedni kawałek kodu!).


2. Przeciążanie operatorów.

a. Dla klasy cmplx (double re, doulbe im) proszę przeładować operatory +, -, *, = oraz << (ten ostatni wypisuje liczbę jako "re+i im" czyli np. dla "cmplx a(2,3)" komenda: "cout<<a"; wypisze na ekranie: "2+i3" )).

b. Dla klasy czlowiek z poprzedniego zadania przeładować operator = (przypisać wartości pól: imię, naziwsko z obiektu z prawej strony operatora na obiekt z lewej strony).

c. Przeciążyć operator [] (nawiasy kwadratowe!) dla klasy:

class tablica {
int a[100];
}

by zwracał [i] - i-ty element tablicy.


Na zajęciach można się spodziewać:

- Użycia operatorów new i delete (tablice wskaźników wielce prawdopodobne) - powtórzenie

- Konstruktory - powtórzenie, lista inicjalizacyjna konstruktora

- Konstruktora kopiującego

- Przeładowywania operatorów, w szczególności: +, <<, = i []


Zalecam też upewnienie się, że programy z poprzednich zajęć zostały poprawione.