Nadesłany przez Kamil Dworak, 14 sierpnia 2010 22:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
dekorator.cpp:
Komentarze

+1
#
BRY
2015-06-09 11:09
Wszystko okej, ale jak ogarnac te alokowane obiekty?
Odpowiedz | Odpowiedz z cytatem | Cytować

+6
#
Lemjur
2015-09-15 05:24
Czy przed przypisaniem do s1 i s2 nowych obiektów, nie powinniśmy zwolnić obiektów? Wszak operator New alokuje nowe bloki pamięci i ustawia na nich wskaźnik.
Odpowiedz | Odpowiedz z cytatem | Cytować

+1
#
SKC
2017-06-08 15:07
No właśnie nie. Klimatyzacja i OponyZimowe to wersje dekoratora. Konstruktor dekoratora zachowuje wskaźnik do obiektu z parametru i używa go potem w funkcjach about i cena. Wiec usunąć go na tym etapie nie można :) Po zakończniu pracy z obiektami można by posprzątać dla porządtku i jawnie pozwalaniać pamięć, ale i tak po zakończaniu main zrobi się to samo. Zresztą to przykład do dekorowania tylko.
Odpowiedz | Odpowiedz z cytatem | Cytować

+1
#
Dudoxxx
2018-06-06 13:46
Trzeba pamiętać, że wskaźniki do tych obiektów s1 i s2 alokowanych na początku dla samochodów są teraz składowymi klas dodatków. Pytanie czy trzeba coś tu zwalniać i czy potrzeba wirtualnych destruktorów :)
Odpowiedz | Odpowiedz z cytatem | Cytować

+1
#
Jaco
2016-11-13 16:55
Zdecydowanie nie powinniśmy zwalniać obiektów spod s1 i s2 przed przypisaniem do nich nowych. W końcu wskaźniki są przekazywane do konstruktora klasy Klimatyzacja oraz potrzebujemy tych obiektów na dalszą część programu. Powinniśmy natomiast zwolnić je na koniec programu. Tyle tylko, że nie mamy już do nich dostępu przez s1 i s2 a przez wskaźnik car więc w destruktorze klas Klimatyzacja i OponyZimowe powinna znaleźć się instrukcja "delete car". Oczywiście, wciąż, na końcu programu powinny być kasowane obiekty spod s1, s2, i s3, które wskazują już na nowe obiekty. Poprawiony i lekko zmodyfikowany przykład znajdziecie na moim GitHubie: https://github.com/Jaco32/Dekorator
Odpowiedz | Odpowiedz z cytatem | Cytować

+1
#
Pacze i widze
2017-06-29 23:59
A załóżmy teraz, że mamy klasę KomisSamochodow y (jakiś tam kontener, np dziedziczący po std::list) i chcemy zrobić upust cenowy dla wszystkich aut, które mają klimatyzację na dodatkowym wyposażeniu? Taki model totalnie blokuje implementację podobnych funkcjonalności . Jak np. dowiedzieć się, czy obiekt s3 posiada klimatyzację?
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz