Poznaj C++ w$ godziny0190

Poznaj C++ w$ godziny0190



Zaawansowane referencje i wskaźniki 179

ZAWSZE

NIGDY

Zawsze przekazuj parametry przez wartość, jeśli jest to konieczne.

Zawsze, jeśli jest to konieczne, zwracaj obiekty przez wartość.

Nigdy nie zwracaj referencji do obiektów, które nie będą dłużej dostępne (np. do obiektów lokalnych funkcji). Nigdy nie twórz referencji do pustych (nuli) obiektów.

Podsumowanie

W ciągu tej godziny nauczyłeś się, że przekazywanie obiektów przez referencje jest bardziej efektywne niż przekazywanie ich przez wartość. Przekazywanie przez referencje dodatkowo pozwala funkcji na zmianę wartości oryginalnego obiektu.

Wiesz już, że zarówno parametry jak i wartość zwracana z funkcji, mogą być zwracane przez referencje. Można to zaimplementować z wykorzystaniem wskaźników lub referencji.

Umiesz już wykorzystywać stale (const) wskaźniki i stałe referencje do bezpiecznego przekazywania wartości między funkcjami, przy jednoczesnym zachowaniu efektywności przekazywania przez referencje.

Pytania i odpowiedzi

P: Dlaczego wykorzystywać wskaźniki skoro referencje są prostsze?

O: Referencje nie mogą być puste (nuli) i nie można zmieniać obiektów, do których się odnoszą (tzn. po przypisaniu referencji do obiektu, nie można przypisać do tej referencji innego obiektu). Wskaźniki są bardziej elastyczne, oczywiście kosztem komplikacji użycia.

P: Po co w ogóle zwracać coś z funkcji przez wartość?

O: Jeśli zwracany obiekt jest lokalny to musi być zwrócony przez wartość. W przeciwnym wypadku zwrócona zostanie referencja do nieistniejącego obiektu.

P: No to skoro zwracanie przez referencje jest niebezpieczne to dlaczego zawsze nie zwracać obiektów przez wartość?

O: Zwracanie przez referencje nie zawsze jest niebezpieczne natomiast zawsze zwiększa efektywność programu. Referencje oszczędzają pamięć i przyspieszają program.

ZAWSZE

NIGDY

Zawsze przekazuj parametry przez wartość, jeśli jest to konieczne.

Zawsze, jeśli jest to konieczne, zwracaj obiekty przez wartość.

Nigdy nie zwracaj referencji do obiektów, które nie będą dłużej dostępne (np. do obiektów lokalnych funkcji).

Nigdy nie twórz referencji do pustych (nuli) obiektów.

Podsumowanie

W ciągu tej godziny nauczyłeś się, że przekazywanie obiektów przez referencje jest bardziej efektywne niż przekazywanie ich przez wartość. Przekazywanie przez referencje dodatkowo pozwala funkcji na zmianę wartości oryginalnego obiektu.

Wiesz już, że zarówno parametry jak i wartość zwracana z funkcji, mogą być zwracane przez referencje. Można to zaimplementować z wykorzystaniem wskaźników lub referencji.

Umiesz już wykorzystywać stałe (const) wskaźniki i stale referencje do bezpiecznego przekazywania wartości między funkcjami, przy jednoczesnym zachowaniu efektywności przekazywania przez referencje.

Pytania i odpowiedzi

P: Dlaczego wykorzystywać wskaźniki skoro referencje są prostsze?

O: Referencje nie mogą być puste (nuli) i nie można zmieniać obiektów, do których się odnoszą (tzn. po przypisaniu referencji do obiektu, nie można przypisać do tej referencji innego obiektu). Wskaźniki są bardziej elastyczne, oczywiście kosztem komplikacji użycia.

P: Po co w ogóle zwracać coś z funkcji przez wartość?

O: Jeśli zwracany obiekt jest lokalny to musi być zwrócony przez wartość. W przeciwnym wypadku zwrócona zostanie referencja do nieistniejącego obiektu.

P: No to skoro zwracanie przez referencje jest niebezpieczne to dlaczego zawsze nie zwracać obiektów przez wartość?

O: Zwracanie przez referencje nie zawsze jest niebezpieczne natomiast zawsze zwiększa efektywność programu. Referencje oszczędzają pamięć i przyspieszają program.


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$ 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$ godziny0180 169Zaawansowane referencje i wskaźniki 39:    FunkcjaDruga(
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$ godziny0178 Godzina 12Zaawansowane referencje i wskaźniki W ciągu ostatnich trzech god
Poznaj C++ w$ godziny0119 Zaawansowane sterowanie programem 107Pętle while Pętla while pozwala na po
Poznaj C++ w$ godziny0121 Zaawansowane sterowanie programem 109 W liniach 12-15 wprowadzamy wartości
Poznaj C++ w$ godziny0123 Zaawansowane sterowanie programem 111 W linii 32 obliczana jest reszta z d
Poznaj C++ w$ godziny0125 Zaawansowane sterowanie programem Listing 8.6. Pomijanie pętli while 1:
Poznaj C++ w$ godziny0127 Zaawansowane sterowanie programem 115Listing 8.8. Jeszcze raz pętla while
Poznaj C++ w$ godziny0129 Zaawansowane sterowanie programem 117Listing 8.10. Demonstracja wielokrotn
Poznaj C++ w$ godziny0131 Zaawansowane sterowanie programem 119EFEKT DZIAŁANIA: No to ile razy sie p
Poznaj C++ w$ godziny0133 Zaawansowane sterowanie programem 121 Jaki znak?
Poznaj C++ w$ godziny0135 Zaawansowane sterowanie programem 153 20:    break; 21: &nb
Poznaj C++ w$ godziny0156 145Zaawansowane wykorzystanie wskaźników W liniach 6-13 deklarujemy klasę

więcej podobnych podstron