Poznaj C++ w$ godziny0180

Poznaj C++ w$ godziny0180



169


Zaawansowane referencje i wskaźniki

39:    FunkcjaDruga(SFrisky);

40:    return 0;

41:    )

42:

43:    // FunkcjaPierwsza, przekazanie przez wartość

44:    ZwyklyKot FunkcjaPierwsza(ZwyklyKot Kot)

45:    {

46:    cout « "FunkcjaPierwsza    koniec...\n";

47:    return Kot;

48:    )

49:

50:    // FunkcjaDruga, przekazanie przez wskaźnik

51:    ZwyklyKot* FunkcjaDruga (ZwyklyKot *Kot)

52:    {

53:    cout « "FunkcjaDruga    koniec...\n";

54:    return Kot;

55:    )

EFEKT DZIAŁANIA:

1:    Tworzenie kota...

2:    Konstruktor    zwykłego kota...

3:    Wywołanie FunkcjaPierwsza...

4:    Konstruktor    kopiujący zwykłego    kota...

5:    FunkcjaPierwsza koniec...

6:    Konstruktor    kopiujący zwykłego    kota...

7:    Destruktor zwykłego kota...

8:    Destruktor zwykłego kota...

9:    Wywołanie FunkcjaDruga...

10:    FunkcjaDruga koniec...

11:    Destruktor zwykłego kota...


Numery linii zostały dodane aby ułatwić późniejszą analizę wyniku.


W liniach 6-12 deklarowana jest bardzo uproszczona klasa ZwyklyKot.

ANALIZA:


Konstruktor, konstruktor kopiujący i destruktor wypisują stosowny komunikat, dzięki czemu wiadomo, kiedy są wywoływane.

W linii 34 main() wypisuje informację; widać to w linii 1 na wydruku. W linii 35 tworzony jest obiekt klasy ZwyklyKot. Zostaje wywołany konstruktor klasy, co jest widoczne w linii 2 wydruku.

W linii 36 main() informuje, że będzie wywoływać funkcję FunkcjaPierwsza (). Informacja jest widoczna w 3 linii wydruku. Ponieważ funkcja FunkcjaPierwsza () pobiera obiekt klasy ZwyklyKot przez wartość, dlatego na stosie musi zostać stworzona kopia obiektu. Zostaje wywołany konstruktor kopiujący, o czym informuje nas 4 linia wydruku.

Zaawansowane referencje i wskaźniki

169


39:    FunkcjaDruga(SFrisky);

40:    return 0;

41:    )

42:

43:    // FunkcjaPierwsza, przekazanie przez wartość

44:    ZwyklyKot FunkcjaPierwsza(ZwyklyKot Kot)

45:    (

46:    cout « "FunkcjaPierwsza    koniec...\n";

47:    return Kot;

48:    >

49:

50:    // FunkcjaDruga, przekazanie przez wskaźnik

51:    ZwyklyKot* FunkcjaDruga (ZwyklyKot *Kot)

52:    (

53:    cout « "FunkcjaDruga    koniec...\n";

54:    return Kot;

55:    )

EFEKT DZIAŁANIA:

1:    Tworzenie kota...

2:    Konstruktor    zwykłego kota...

3:    Wywołanie FunkcjaPierwsza...

4:    Konstruktor    kopiujący zwykłego    kota...

5:    FunkcjaPierwsza koniec...

6:    Konstruktor    kopiujący zwykłego    kota...

7:    Destruktor zwykłego kota...

8:    Destruktor zwykłego kota...

9:    Wywołanie FunkcjaDruga...

10:    FunkcjaDruga koniec...

11:    Destruktor zwykłego kota...


Numery linii zostały dodane aby ułatwić późniejszą analizę wyniku.


ANALIZA:


W liniach 6-12 deklarowana jest bardzo uproszczona klasa ZwyklyKot. Konstruktor, konstruktor kopiujący i destruktor wypisują stosowny komunikat, dzięki czemu wiadomo, kiedy są wywoływane.

W linii 34 main() wypisuje informację; widać to w linii 1 na wydruku. W linii 35 tworzony jest obiekt klasy ZwyklyKot. Zostaje wywołany konstruktor klasy, co jest widoczne w linii 2 wydruku.

W linii 36 main() informuje, że będzie wywoływać funkcję FunkcjaPierwsza (). Informacja jest widoczna w 3 linii wydruku. Ponieważ funkcja FunkcjaPierwsza () pobiera obiekt klasy ZwyklyKot przez wartość, dlatego na stosie musi zostać stworzona kopia obiektu. Zostaje wywołany konstruktor kopiujący, o czym informuje nas 4 linia wydruku.

Wartość zwracana z funkcji FunkcjaPierwsza () nie jest przypisywana do żadnego

obiektu, zatem obiekt tworzony w momencie wyjścia z funkcji jest natychmiast


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0182 Zaawansowane referencje i wskaźniki 171 int PobierzWiek() const { return j
Poznaj C++ w$ godziny0184 Zaawansowane referencje i wskaźniki 173 Ponieważ wiemy, że obiekt nie będz
Poznaj C++ w$ godziny0186 175Zaawansowane referencje i wskaźniki Wskaźnik plnt jest deklarowany i in
Poznaj C++ w$ godziny0188 177Zaawansowane referencje i wskaźniki 18:    ZwyklyKot::Zw
Poznaj C++ w$ godziny0190 Zaawansowane referencje i wskaźniki 179 ZAWSZE NIGDY Zawsze przekazuj p
Poznaj C++ w$ godziny0178 Godzina 12Zaawansowane referencje i wskaźniki W ciągu ostatnich trzech god
Poznaj C++ w$ godziny0035 Program w C++ 19Funkcje ■ain() jest funkcją specjalną. Jest automatycznie
Poznaj C++ w$ godziny0156 145Zaawansowane wykorzystanie wskaźników W liniach 6-13 deklarujemy klasę
Poznaj C++ w$ godziny0158 Zaawansowane wykorzystanie wskaźników 147 32:    } 33: 34:
Poznaj C++ w$ godziny0160 Zaawansowane wykorzystanie wskaźników 149Do czego służy wskaźnik this Gdyb
Poznaj C++ w$ godziny0162 Zaawansowane wykorzystanie wskaźników 151 Zaawansowane wykorzystanie wskaź
Poznaj C++ w$ godziny0191 IfZaawansowane narzędziaGodzina 13    Zaawansowane funkcje
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
Poznaj C++ w$ godziny0165 154 Godzina 11 Wskaźniki są zmiennymi przechowującymi adresy innych obiekt
Poznaj C++ w$ godziny0170 Referencje 159Przekazywanie argumentów funkcji przez referencje W trakcie
Poznaj C++ w$ godziny0176 Referencje 165 Funkcja Potęgi () sprawdza poprawność parametru przekazaneg
Poznaj C++ w$ godziny0185 174 Godzina 12 52:    // FunkcjaDruga pobiera referencje do
Poznaj C++ w$ godziny0010 Spis treści    ix 11    Referencje

więcej podobnych podstron