141 TIF

141 TIF



z nich jest większy. Patrząc na kod, widzimy, że przy operatorze porównania (==) wywołuje się funkcję strcmp w celu sprawdzenia, czy oba napisy są równe. Funkcję tę wywołuje się również w wypadku operatora < do sprawdzenia, który z napisów jest większy. Dlatego też w sytuacji, w której napisy nie są sobie równe, funkcja strcmp zostaje wywołana dwukrotnie (raz dla operatora = i raz dla operatora <).

I co z tego? Otóż funkcja strcmp zwraca zero, liczbę ujemną albo liczbę dodatnią, jednoznacznie pokazując, w jakiej relacji są porównywane wartości. Można zatem wykryć, jak mają się do siebie napisy napisl i napis2 za pomocą jednego tylko wywołania funkcji strcmp, a nie dwóch. Pokazany kod jest zrozumiały i czytelny, ale nie tak wydajny, jak mógłby być.

Przykład: TestStringClass() w pliku String.cpp

106


Nietworzenie odwołań do zmiennych lokalnych

unikanie awarii; unikanie nieoczekiwanych wyników

Przed

Napis &operator+(const Napis&napis) const

{

Napis napisNowy(m_pch);

napisNowy.Dołącz(napis.m_pch, napis.m_cch); return napisNowy;

}

Po

Napis operator+(const Napis&napis) const

{

Napis napisNowy(m_pch);

napisNowy.Dołącz(napis.m_pch, napis.m_cch); return napisNowy;

}

Zauważmy drobną różnicę między fragmentami „Przed” i „Po”. Operator we fragmencie „Przed” zwraca odwołanie do Napis. Operator we fragmencie „Po” zwraca kopię Napis.

Ponieważ pamięć dla zmiennej napisNowy jest przydzielana na stosie, operator w pierwszym kodzie zwraca odwołanie do zmiennej na stosie. Zmienna ta zostanie usunięta po utracie zasięgu przez operator, co może doprowadzić do powstania błęd-


Wyszukiwarka

Podobne podstrony:
Metoda rozwiązywania zadania: Patrząc na rysunek widzimy, że tg^= h/xk, gdzie xk współrzędną rozbitk
że sztywność podparcia na stopkach antywibracyjnych jest większa niż na platformie i dlatego uznaje
CCF20091002008 tif dobieństwo jest stosunkiem naturalnym. Na tak sformułowane pytanie nie można odp
DSCN7709 Rycina 5-5: Wychylenie dodatnie jest o 3,8 mm większe niż wyc^tenae Na Rycinie 5-5 widzimy,
P1191316 19 Potencjał chemiczny wody w przestworach miedzykomórkowa eh I, jest większy niż na zewnąt
3 (70) I Idita Rysowanie nie jest trudne. Patrząc na wzór, potgcz odpowiednie kropki, by powstały ry
page0476 474 PLATON. Jednakże terminologia Platona nigdy nie jest stalą. Patrząc na każda rzecz z od
czaj powieściowych zdarzeń o wyraźnej biblijnej proweniencji Jednym z nich jest zwrócenie uwagi na p
DSCN6266 (Kopiowanie) Istnieją te? inne metody wyznaczaniu loeus genów. Jedną /. nich jest np. poszu
TWÓJ DOM Jest takie miejsce na ziemi, w atlasie go nie znajdziecie, gdzie czujesz się, drogi
5 (144) przy czym sprawność dźwigniowego układu hamulca jest zwykle oceniana na ok. 95%. Należy przy
z których jeden jest większy od podziałki biegunowej, a drugi mniejszy. Średni po-skok równa się pod

więcej podobnych podstron