-
Data: 2012-07-06 16:01:34
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: "slawek" <h...@s...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Użytkownik "Andrzej Jarzabek" napisał w wiadomości grup
dyskusyjnych:1e74e8d1-f280-479f-96a7-fa085ecea990@n1
6g2000vbn.googlegroups.com...
>konstruowany. Czyli jeśli masz klasę B, która wywołuje swój 'run' w
>konstruktorze, tworzysz dziedziczącą po niej klasę D, która nadpisuje
>funkcje wirtualne klasy B, to wywołania tych funkcji w 'run' nadal
>wywołują funkcje zdediniowane dla B, nie te dla D. Nie mówiąc już o
To jest chore.
Ale czas na PODSUMOWANIE...
Pomysł, aby w duchu RAII odpalać np. wątek itp. przez wywołanie
konstruktora, tj. przez samo skonstruowanie obiektu pewnej klasy (w dalszej
dyskusji nazywanej Foo) może być kłopotliwy... bardziej niż np. wywoływanie
dodatkowej publicznej metody run(), a to dlatego że:
1. różne języki w różny sposób rozumieją konstruktor i nie jest on
zupełnie-taką-samą-metodą-jak-inne (vtable, wyjątki), problemy z
dziedziczeniem;
2. możliwe jest przypadkowe stworzenie obiektu tymczasowego (co może w
niezamierzony sposób zrobić coś, czego nie chcielibyśmy);
3. konstruktor powinien zawierać wyłącznie te operacje, które nie mają
efektów ubocznych innych niż tworzenie obiektów powiązanych z daną klasą.
Punkt 3. można tak rozwinąć: konstruktor może tworzyć obiekty zagregowanie,
lecz konsekwentne stosowanie reguły będzie chronić przed nieodwracalnymi
efektami ubocznymi i w tym przypadku. Zawsze należy dążyć do tego, aby para
wywołań konstruktor-destruktor (bez jakichkolwiek innych pomiędzy) była bez
znaczenia dla działania programu. (A ten postulat nie jest spełniony, gdy
konstruktor zawiera nietrywialny run(), tj. wywołanie
procedury/funkcji/metody/czegokolwiek co niesie ze sobą nieodwracalne skutki
np. otwarcie pliku do zapisu i skasowanie w nim "starych" danych.)
Następne wpisy z tego wątku
- 06.07.12 16:13 AK
- 06.07.12 16:33 Edek Pienkowski
- 06.07.12 19:11 Bogusław Szczepanowski
- 06.07.12 19:20 AK
- 06.07.12 20:38 slawek
- 06.07.12 20:55 Edek Pienkowski
- 07.07.12 10:54 Bogusław Szczepanowski
- 07.07.12 10:59 Bogusław Szczepanowski
- 07.07.12 12:13 AK
- 07.07.12 12:28 Edek Pienkowski
- 07.07.12 12:36 Michoo
- 07.07.12 19:29 slawek
- 09.07.12 12:38 Artur M. Piwko
- 11.07.12 13:49 AK
- 11.07.12 23:59 Michoo
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-02-07 Jaki silikon lub może klej?
- 2025-02-07 Gdańsk => iOS Developer (Swift experience) <=
- 2025-02-07 Warszawa => Starszy Programista C <=
- 2025-02-07 Niby to nie sąd ale kooorwa tak to w sądach dziś wygląda?
- 2025-02-06 PROGRAM DOPŁAT DO AUT ELEKTRYCZNYCH TO ABSURD. ZA ŚRODKI Z KPO KUPIMY NIEMIECKIE I CHIŃSKIE AUTA
- 2025-02-05 ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-07 Smar do video
- 2025-02-06 Litowe baterie AA Li/FeS2 a alkaliczne
- 2025-02-07 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-07 Warszawa => System Architect (Java background) <=
- 2025-02-07 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-02-07 Warszawa => Solution Architect (Java background) <=
- 2025-02-07 Gliwice => Ekspert IT (obszar systemów sieciowych) <=