Konstruowanie obiektów klas

Nasza ocena:

4
Wyświetleń: 560
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Konstruowanie obiektów klas - strona 1

Fragment notatki:


Konstruowanie obiektów  klas Wykład 5 10/10/25 2 Konstruktory  Konstruktor jest specjalną funkcją składową  uruchamianą automatycznie przy definiowaniu każdego  obiektu danej klasy  Służy do nadawania wartości początkowych składnikom  tworzonych obiektów  Może być przeładowany   Bardzo częsta praktyka  Nie zwraca nic  Nie może być typu  static  Nie może być typu  virtual  Może być wywoływany do tworzenia obiektów z  przydomkiem  const  i  volatile 10/10/25 3 Sposoby wywoływania  konstruktorów  Obiekty lokalne  Automatyczne – powstają gdy program napotka  ich definicję, a przestają istnieć kiedy program  wychodzi poza blok, w którym one powstały  Statyczne  - konstruktor wykonany zostanie na  początku programu przed wywołaniem funkcji  main() . Zakres ważności odnosi się do bloku.  Czas życia równy jest czasowi pracy programu 10/10/25 4 Sposoby wywoływania  konstruktorów...  Obiekty globalne – tworzone są przed wykonaniem  funkcji  main()  tak jak statyczne. Czas życia  równy czasowi wykonywania programu. Zakres  ważności cały plik  Obiekty tworzone operatorem  new  – konstruktor  wywoływany przy tworzeniu. Czas życia od  momentu wykonanie  new  do końca programu lub  wywołania  delete . Zakres ważności, wszędzie  tam gdzie jest dostępny choć jeden wskaźnik  pokazujący na dany obiekt  UWAGA utrata wskaźnika nie oznacza zniszczenia  obiektu!!! 10/10/25 5 Konstruktor domniemany  Konstruktor domniemany to taki, który można  wywołać bez żadnych argumentów  Może nie mieć żadnych argumentów  Może mieć wszystkie argumenty domyślne  Klasa może mieć tylko jeden konstruktor  domniemany  Jeśli klasa nie ma żadnego konstruktora to sam  kompilator automatycznie wygeneruje  konstruktor domniemany  Jeżeli klasa ma zdefiniowany chociaż jeden  niedomyślny konstruktor to kompilator go już nie  utworzy 10/10/25 6 Lista inicjalizacyjna   Jeżeli w klasie mamy obiekty z przydomkiem  const to  Nie możemy nadać wartości w ciele klasy w sposób  const float f = 3.14;  Do nadawania wartości obiektom  const  służy lista  inicjalizacyjna konstruktora  klasa::klasa(args) : lista {...}  Wykonanie konstruktora odbywa się w dwóch  etapach  Inicjalizacja składników  Wykonanie instrukcji w ciele konstruktora 10/10/25 7 Lista inicjalizacyjna...   Listę zapisujemy w następujący sposób  klasa::klasa(int a, float f) :  zm_const_int(a), zm_const_float(f)

(…)

… wirtualną
Działa odwrotnie niż konstruktor konwertujący

10/10/25
Konwertuje z typu danej klasy, której jest składową na inny
typ
21
Który sposób wybrać?


Przy konwersji obiektu klasy A na typ wbudowany
tylko funkcja konwertująca
Przy konwersji obiektu klasy A na obiekt klasy B



10/10/25
Po pierwsze funkcja konwertująca w klasie A
Tylko w sytuacji braku możliwości zmian klasy A
konstruktor…
… to jest wywoływany
automatycznie stworzony konstruktor domyślny
Jeżeli nie posiada konstruktora domyślnego to jej
inicjalizacja musi pojawić się na liście
Konstruktory składników są wywoływane przed
wywołaniem konstruktora klasy, w której się
znajdują (destruktory odwrotnie)
Przykład cpp_5.2
10/10/25
8
Konstruktor kopiujący

Konstruktor kopiujący jest wywoływany z jednym
argumentem będącym referencją do tej samej…
… statycznej metodzie dla
każdego sposobu na utworzenie obiektu danej klasy
W ten sposób można stworzyć klasę finalną tzn. taką, po której się nie da
dziedziczyć
Przykład cpp_5.7
10/10/25
12
Destruktory






Destruktor wywoływany jest automatycznie przy
likwidacji obiektu
Destruktor nie zwraca nic
Destruktor nie może być przeładowany
Jawne wywołanie destruktora wykonuje polecenia
w nim zawarte…
… tablic wskaźników
10/10/25
15
Konwersje (typów)

Konwersje (typów) – innymi słowy
przekształcenia obiektów jednego typu na
inny



Konwersje niejawne
Konwersje jawne
Konwersje typu jakim jest klasa muszą
zostać zdefiniowane przez programistę,
kompilator nie wykona konwersji jeśli
nawet wydaje się nam oczywista
10/10/25
16
Konwersje niejawne

Przy wywołaniu funkcji


Przy zwracaniu rezultatu…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz