• Nie Znaleziono Wyników

Przekazywanie do funkcji

N/A
N/A
Protected

Academic year: 2021

Share "Przekazywanie do funkcji"

Copied!
17
0
0

Pełen tekst

(1)

Przekazywanie do funkcji argumentów będących

obiektami

dr Artur Bartoszewski

Katedra Informatyki

UTH Radom

(2)

Podobnie jak zmienne typu int czy double, każdy obiekt można

przekazać do funkcji jako argument (mowa tu o funkcji z poza

klasy, nie metodzie wchodzącej w skład klasy).

(3)

Przekazywanie obiektu przez wartość

Domyślnie przesyłamy obiekt przez wartość – czyli na potrzeby funkcji tworzona jest jego kopia (tak samo jak w przypadku zmienne prostej)

Uwaga: Jeśli obiekt jest duży, to proces kopiowania może trwać

dłużej. Wielokrotne wysłanie przez wartość może wyraźnie

wpływać na zwolnienie programu.

(4)

Przekazywanie obiektu

przez wartość - przykład

(5)

Niestety nie zadziałało….

Obiekt klasy „Osoba”

przekazujemy do funkcji „rodo()”

wewnątrz której jest

modyfikowany

(6)

Należy pamiętać, że przekazując obiekt przez

wartość wysyłamy do funkcji jego kopię, która jest usuwana z pamięci po zakończeniu funkcji.

Zmiany wprowadzone na kopii nie wpłyną na oryginał.

(7)

Przekazywanie obiektu przez referencję

Referencja jest drugą nazwą, „przezwiskiem” - nie przezwiskiem

klasy, ale danego egzemplarza jej obiektu. Wysyłając taki

egzemplarz obiektu do funkcji na zasadzie przesłania przez

referencję - sprawiamy, że nie jest on kopiowany. Funkcja ma

dostęp do oryginału.

(8)

przez referencję - przykład

Klasa wygląda dokładnie tak samo jak w poprzednim przykładzie

(9)

Przekazujemy obiekt przez

referencję – tym razem zadziała

prawidłowo

(10)

Przykład gra RPG v 0.1

Katedra Informatyki UTH Radom

Tworzymy bardzo prostą tekstową grę RPG, w której będziemy wystawiać dwa obiekty klasy „postac” do walki w funkcji

„ring”

Projekt będzie

rozwijany ;)

(11)
(12)

Losujemy

parametry postaci

(13)
(14)

Ponieważ obiekty przesłane zostały przez wartość widzimy cztery wywołania destruktora :

• dwa dla kopii użytych w funkcji ring()

• dwa dla oryginałów.

(15)
(16)

Ponieważ obiekty przesłane zostały przez referencję widzimy tylko dwa wywołania destruktora - dwa dla oryginałów w chwili zamykania

programu

(17)

• Grębosz J. : Symfonia C++, Programowanie w języku C++

orientowane obiektowo, Wydawnictwo Edition 2000.

• Jakubczyk K.: Turbo Pascal i Borland C++ Przykłady, Helion.

Warto zajrzeć także do:

• Sokół R. : Microsoft Visual Studio 2012 Programowanie w Ci C++, Helion.

• Kerninghan B. W., Ritchie D. M.: język ANSI C, Wydawnictwo Naukowo Techniczne.

Dla bardziej zaawansowanych:

• Grębosz J. : Pasja C++, Wydawnictwo Edition 2000.

• Meyers S.: język C++ bardziej efektywnie, Wydawnictwo Naukowo

Cytaty

Powiązane dokumenty

Zasadniczym elementem programu są funkcje pole1, pole2 i pole3 - wszystkie funkcje mają jedno podstawowe zadanie - liczą powierzchnię prostokąta, którego jeden bok ma

Zmienne lokalne statyczne – pozwalają, by zmienna lokalna dla danej funkcji przy ponownym wejściu do tej funkcji miała taką wartość, jak przy ostatnim

Jeżeli Operator i Wnioskodawca stwierdzą, że nie istnieją realne alternatywy oraz że nie jest możliwe uwzględnienie Wniosku o dostęp do Obiektu w wyniku

Szczegółowe warunki techniczne dostępu do punktu świadczenia usług z zakresu rewizji technicznej taboru zostały opisane w punkcie 5 Regulaminu („Szczegółowe

1, obsługującej zdarzenie btnZapisz_Click() musimy jawnie wskazać o jaki obiekt nam chodzi stąd wpisujemy nazwę obiektu, w tym przypadku

Przekazywanie argumentów do funkcji przez wartość oznacza, że po wywołaniu funkcji tworzone są lokalne kopie zmiennych skojarzonych z jej argumentami.. W funkcji

Ponieważ zasięg widzialności funkcji rozpoczyna się od miejsca jej deklaracji, należy przed definicją funkcji main() podać formalną deklarację czyli prototyp

Operatorem Obiektu jest POLREGIO sp. Kolejowa 1, wpisana do Rejestru Przedsiębiorców Krajowego Rejestru Sądowego prowadzonego przez Sąd Rejonowy dla m.st. Obiekt