teoria

dział ogólny

teoria

Nowy postprzez ttomekb » sobota, 28 listopada 2009, 12:25

witam
\czy możecie mi pomóc?? muszę dobrze opisać poniższe zagadnienia... to co wiedziałem napisałem... sprawdźcie czy dobrze a jak nie to proszę pomóżcie ;)

1. Co to jest Mutex (API Windows Mutex)?

Mutex kontroluje dostęp do pliku. Może być otwarty albo zamknięty. Jeśli proces, watek, aplikacja chce mieć dostęp do zasobów na dysku, z których korzysta już inna aplikacja potrzebny jest muter aby nie było błędów. Jeśli aplikacja korzysta z zasobów to blokuje muter a druga jeśli chce korzystać z tych samych zasobów to sprawdza muter czy jest wolny a jeśli nie no to zajmuje się swoimi czynnościami i czasami sprawdza mutex

do obsługi używamy: createmutex releasemutex openmutex

Mutex został pierwotnie opracowany jako algorytm wzajemnego wykluczania procesów współbieżnych (Drekker, Peterson, Lamport), ubiegających się o dostęp do współdzielonych zasobów (inaczej czekających na wejście do sekcji krytycznej)
• Obecnie mutex oznacza tez abstrakcyjny typ danych, który realizuje algorytm wzajemnego wykluczania.
• Najczęściej jest implementowany w jądrze systemu operacyjnego, co gwarantuje bezpieczeństwo.
• Może być związany z kolejką procesów oczekujących, co gwarantuje żywotność i uczciwość (np. kolejka FIFO).
• Dodatkowo proces oczekujący w kolejce może być wstrzymywany, co zapobiega pętli aktywnego oczekiwania (busy-wait)

2. Co zawiera biblioteka STL, na czym polega?

Stl jest standardowa biblioteka w c++ i udostępnia strumienie, klasę do obsługi łańcuchów znaków, kontenery, algorytmy działające na kontenerach i ogólnie algorytmy, są tam wektory listy, algorytmy sortowania zliczania…itp.

3. Co to są kontenery? Jakie mamy ich rodzaje?

Kontenery są to zasobniki na twoje dane, tzn. miejsce w którym możemy przetrzymywać swoje dane i ułatwia przetrzymywanie danych i poruszanie się po nich. Rodzaje: sekwencyjne: Vector, list(lista), Deque(podwojnie laczona kolejka(talia)) to sa podstawowe.asocjacyjne: Zwykla kolejka, kolejka priorytetowa, stos, mapa, zbiór(set).

4. Co to są iteratory? Jakie posiadamy iteratory?

Są to wskaźniki do elementów kontenera, umożliwiają dostęp do danych i przeglądanie ich, inteligentne wskaźniki. Typy: wejściowy- odczyt, wyjściowy-zapis, taki który się porusza do przodu, taki poruszający się w obie strony, taki o swobodnym dostępie.

5. Funkcja wirtualna?

Mamy dwa obiekty z funkcjami wirtualnymi, obiekty są spokrewnione i teraz jeśli jakąś funkcja przyjmuje jako argument któryś tam obiekt to obojętnie jaki obiekt jej podasz ona wywoła odpowiednia funkcje.
====
piszemy klase i to czy zawrzemy funkcje wirtualne czy czystko wirtualne rzutuje na dalsza hierarhie dziedziczenia po tej klasie. tzn decydujac sie na owe funkcje musimy okreslic jak powinna wygladac dalsza hierarhia.

zawieracja funkcje czysto wirtualne wymuszamy na kolejny klasach aby ta funkcje implementowaly. mamy swiadomosc ze ta funkcja musi byc w kazdej klasie pochodnej i (najczesciej) powinna ona byc specyficzna dla tej klasy pochodnej.

gdy zawieramy funnkcje wirtualne to mowimy ze klasa pochodna moze implementoac ta funkcje ale nie musi bo moze skozystac z naszej.

natomiast gdy zawieramy zwykla funkcje to mowimy ze tej funkji nie wolno!!! implementowac. stosujemy to wtedy gdy uznajemy ze ta nasza implementacja jest poprawna dla dowolnej klasy ktora bedzie dziedziczyc po naszej klase.

6. Co to są wątki?

Każdy proces może mieć wiele wątków, watki to są instrukcje wykonywane współbieżnie.

7. Co to jest polimorfizm?

Mamy dwa obiekty z funkcjami wirtualnymi, obiekty są spokrewnione i teraz jeśli jakaś funkcja przyjmuje jako argument któryś tam obiekt to obojętnie jaki obiekt jej podasz ona wywoła odpowiednia funkcje.

8. Różnica między wektorem a kolejką?

W wektorze masz swobodny dostęp do każdego elementu a w kolejce nie z końca

9. Czy się różni mapa od wektora?

Sposobem przechowywania danych: elementy są posortowane według klucza. Mapa to posortowany kontener asocjacyjny. wektor to obiektowa wersja tablicy.

10. Czy się różni proces od wątku?

Każdy proces ma własną, niezależną przestrzeń adresową, w przeciwieństwie do wątków, które korzystają z przestrzeni adresowej procesu-właściciela, a co za tym idzie nie mogą istnieć poza procesem, który je stworzył.

11. czym różni się referencja od wskaźnika?

W przeciwieństwie do wskaźnika referencja nie może być niezainicjalizowana. Jej inicjalizacja następuje tylko raz, podczas definicji zmiennej referencyjnej (zwanej aliasem), i nie podlega zmianie.

12. Co to jest wirtualna klasa bazowa?

Klasa która ma czysto wirtualne funkcje nie ma konstruktora bo konstruktor nie może być wirtualny.

13. Sposoby synchronizacji wątków?

Każdy wątek w systemie ma własny zbiór rejestrów CPU i własny stos. Aby mógł działać, jednostka centralna CPU musi mu przydzielić porcję czasu zwaną kwantem. Wykonywanie wątków w systemach takich jak np. Windows XP wygląda w następujący sposób: System, według określonego algorytmu, przydziela kwant czasu CPU dla jednego z wątków. W tym krótkim momencie wątek wykonuje swój kod. Później następuje przerwanie i system przydziela kwant czasu CPU innemu wątkowi. Znów następuje wykonanie kodu, przerwanie i przydzielenie kwantu czasu CPU kolejnemu wątkowi czekającemu w kolejce. Po krótkim czasie, kwant czasu zostaje znowu przydzielony naszemu "pierwszemu" wątkowi i kontynuuje on swoje wykonanie itd. Należy jeszcze wspomnieć, że niektóre wątki mogą wywłaszczać czas wykonywania innym wątkom, mimo że ich kolejka jeszcze się nie skończyła. Dzieje się tak np. wtedy gdy te mają różne priorytety.

14. Co to jest auto-pointer?

Inteligentny wskaźnik który dba o właściwe zwalnianie pamięci po przekroczeniu czasu życia czyli po wyjściu z zakresu. Wskazuje na obiekty typu jakiegoś. Jest realizowany za pomocą szablonów

Co to jest abstrakcyjna klasa bazowa i czym się charakteryzuje?

Klasa która ma czysto wirtualne funkcje nie ma konstruktora bo konstruktor nie może być wirtualny.

15. Co to jest sekcja krytyczna?

jest to mechanizm pozwalający wykonać szereg instrukcji jak jedna instrukcje atomowa

16. Co oznacza słowo „this"

Wskaźnik do obiektu który jest używany aktualnie I funkcje dzięki nie mu wiedza z jakiego obiektu zostały wywołane I na jakich argumentach działają

17. Co to jest inline?

jest to funkcja. Funkcje inline jak można by się domyśleć z nazwy są funkcjami "w linii" w C++ znaczy to, że kompilator widząc że funkcja jest inline w miejsce jej wywołania nie wstawia jak w normalnym przypadku wskaźnika do tej funkcji w pamięci, lecz wpisuje jej kod w miejsce jej wystąpienia. Takie funkcje dalej jednak występują w pamięci komputera, dzięki czemu możemy tworzyć do nich wskaźniki i używać ich jak w przypadku zwykłych funkcji.

18. Co to jest przeładowania oraz przedefiniowanie operatora?

Stworzenie własnej implementacji istniejących już operatorów. No i używa się ich do własnych obiektów we własnych klasach.

19. Co to jest dziedziczenie?

jedna klasa dziedziczy po drugiej jej zmienne, funkcje, ta klasa która dziedziczy staje się klasa pochodna klasy bazowej.

20. Co to pole bitowe?

Pola bitowe to specjalny typ składnika klasy polegający na tym, że informacja jest przechowywana na określonej liczbie bitów. Długość pola bitowego określa ilość bitów wchodzących w skład pola. Wartość wyrażenia określającego długość pola musi być znana w momencie kompilacji. Pola bitowe są używane w celu oszczędzania pamięci lub do operacji niskiego poziomu wymagających zmian pojedynczych bitów.

21. Co to jest smart-pointer?

Typ obiektu w stylu wskaźnika, który rozszerza jego możliwości

22. Co to jest funkcja zaprzyjaźniona?

Obiekt deklaruje przyjaźń z jakąś funkcja to wtedy ta funkcja jest zaprzyjaźniona z obiektem i może korzystać z jego składników prywatnych

23. Dynamiczne tworzenie obiektów?

Tworzy się obiekty na stercie w trakcie trwania programu, operatory new, delete.

24. Czy destruktor może być wirtualny?

Może być. Ponieważ musi wiedzieć do jakiego obiektu się odwołać, bo jak nie będzie wiedział to odwołuje się do obiektu bazowego.

25. Czy konstruktor może być wirtualny?

nie ma sensu…. Ponieważ każda klasa dziedzicząc po innej klasie musi mieć swój konstruktor

26. Co to jest szablon?

Fabryka funkcji lub klas dla danych typów

27. Co to jest klasa?

Obiekt zdefiniowany przez użytkownika z funkcjami i zmiennymi

28. Co to jest obiekt funkcyjny?

To taka klasa w której jest przeładowany operator nawiasów( )

29. Co to jest lista?

Lista to kontener udostępniany przez STL, nieco mniej popularnym od wektorów
dostęp tylko przez iteratory, dodawanie i usuwanie elementów jest bardzo szybkie i odbywa się w stałym czasie, adresy elementów ulegaja zmianom tak jak w wektorach

29. Co to jest wskaźnik?

Adres obiektu

30. Co to jest konstruktor?

Funkcja która konstruuje obiekt I inicjuje początkowe wartości

31. w jaki sposób można utworzyć klasę?

za pomocą poleceń class, union, struct (czyli unie i struktury)

- Czym się różnią?

mała dygresja o tym, jak to struktura jest tylko w języku c++ tylko dlatego, aby łatwiej było się przenieść z c do c++, bo właściwie struktura jest tym samym co class, poza jedną różnicą.jaka jest różnica? Chodzi o to, że składniki struktury są zawsze public, a jeśli chodzi o class to mamy private, protected i public. I właściwe struktury mogłoby nie być w c++.

32. Unia

chodzi o to, że deklarujemy sobie jakiś tam obszar pamięci, w którym będzie się znajdował określony przez nas typ danych. I tym obszarem gospodarujemy. Coś na kształt pudełka, do które wkładamy co chcemy i wyjmujemy, a pudełko ciągle jest (czyli ta pamięć)

33. Co to jest konstruktor i jakie są jakie rodzaje?

Konstruktor wskazuje na pierwszy element obiektu. ważne w jaki sposób musi być zapis konstruktora kopiującego, aby można było rozpoznać, że jest to kopiujący. Czy jak to ma wyglądać w kodzie.

34. funkcje wirtualne !!

chodzi o to, że jeśli mamy 3 różne klasy 1,2,3 i klasa 2,3 dziedziczy po klasie 1 i jeśli w klasach 2,3 użyjemy tej samej nazwy funkcji (ważne jest to, że jest to ta sama funkcja) i jeśli w klasie 1

naszej funkcji nie damy oznaczenia virtual to kompilator wykona tylko to co znajduje się w klasie 1 tej funkcji(bo tam ślepo sięga) i nie weźmie pod uwagę tego co jest dopisane w klasie 2 i 3.w

jaki sposób (za pomocą czego) musimy skorzystać, aby w ogóle to nasze virtual miało znaczenie. Oczywiście chodzi o wskaźniki

- Co to są wskaźniki i co to jest referencja?

I tutaj ważne, to że przy definiowaniu adresu do którego wskazuje wskaźnik używamy "&" nie oznacza, że to jest referencja, to tylko znaczek, który tak samo wygląda. Zastosowanie "&" przy wskaźniku, czyli zapis wsk = & zmienna. To w takim zapisie "&" zwraca adres danej

WAŻNE Jaka jest istotna różnica pomiędzy referencją a wskaźnikiem?

Wskaźnik może wskazywać na "cokolowiek" obiekt nie musi istnieć (np. wskaźnik może wskazywać na int, czyli: int * wsk). A referencja musi zawsze wskazywać na istniejący obiekt!

35.rzutowanie

czyli np. jeśli chcemy int zmienić na float.w jaki ki sposób wygląda rzutowanie w c a w jaki c++ ?

36. Co oznacza modyfikator volatile?
W skrócie chodzi o to, że dając ten modyfikator zapewniamy sobie, że za każdym razem program będzie wracał do tej danej i na nowo ją pobierał, a nie będzie korzystać sobie z jej kopi, które

mógł gdzieś sobie tymczasowo zapisać.

37. Dziedziczenie. Co się dzieje, jak dziedziczmy po public, po private i po protected.

I tutaj ważne rzeczy: składniki protected i public są dostępne klasie pochodnej bezpośrednio. Można wysnuć cały wywód o tym po co jest protected w klasie. Dzięki niemu jeśli w jakieś klasie bazowej zrobimy składniki protected to nie będę one widzianie globalnie, czyli będą dla całego świata tak jakby private. ALe za to dla klasy pochodnej będę widziane jako public :) czyli dany

składnik będzie zastrzeżony dla klasy bazowej i pochodnej. No i jeszcze warto wspomnieć o tym, jak się dziedziczy. Napiszmy class klasa pochodna : public klasa bazowa . To wiadomo, klasa pochodna dziedziczy po klasie bazowe, ale w tym ważne jest słówko public oznacza, ze wszystko zostanie odziedziczone bez zmian (oprócz private, które jest niewidoczna dla klasy pochodnej nigdy)

Jeśli dziedziczymy przez protected (class klasa pochodna : protected klasa bazowa) to elementy klasy bazowej public i protected, zamieniają się w protected w klasie pochodnej. Jeśli dziedziczmy przez private (class klasa pochodna : private klasa bazowa) to elemetny public i protected stają się private.
====
dziedziczenie publiczne:
modeluje relacje "JEST" czyli klasa pochodna jest klasa bazowa ale nie odwrotnie. auto jest pojazdem ale pojazd nie konicznie jest autem. jezeli nie zachodzi relacja "JEST" to nie ma dziedziczenia publicznego!!! bardzo czesty blad w modelowaniu hierarhi klas!!! dziedziczenie publiczne udostepnia nam zjawisko polimorfizmu (to co kochamy najbardziej:P).

dziedziczenie prywatne:
jest to technika implementacji z wykorzystaniem. co to oznacza? nie zachodzi relacja "JEST"!!! poprostu implementujemy nasza klase wykorzystujac jaka klase juz istniejaca.
w 99,9% przypadkow implementacje z wykorzystaniem wykonuje sie poprzez normalne zawieranie obiektu klasy(jako wlasciwosc) w naszej klasie. po co wiec dziedziczenie prywatne? prywatnie dziedziczmy tylko i wylacznie wtedy gdy chcemy implementowac klase z wykorzystaniem innej klasy ale MUSIMY MIEC DOSTEP DO POL PROTECTED TEJ KLASY!!! tylko i wylacznie wtedy!!! w inym przypadku stosujemy technike zawierania.
w dziedziczeniu prywatnym nie zachodzi zjawisko polimorfizmu ani nic z tych rzeczy. jest to dokladnie to samo to zawarcie klasy bazowej jako pola w naszej klasie tyle ze mamy dostep do pol protected.

38. Jakie znasz dynamiczne alokacje pamięci?jak wygląda składnia i co się tam dokładnie dzieje
Znamy malloc z c i operator new z c++.

EDIT: STARAM SIĘ NA BIEŻĄCO ROBIĆ "AKTUALIZACJĘ"
Ostatnio edytowano niedziela, 29 listopada 2009, 13:56 przez ttomekb, łącznie edytowano 5 razy
Avatar użytkownika
ttomekb
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): piątek, 27 listopada 2009, 18:30
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: vista niestety
Kompilator: C++ Builder
    NieznanyNieznana

Re: teoria

Nowy postprzez polymorphism » sobota, 28 listopada 2009, 13:11

Mutex kontroluje dostęp do pliku.

To zdanie jakoś mi się nie widzi. Drugi akapit lepiej opisuje muteksy.

do obsługi używamy: createmutex releasemutex openmutex

Pod WinAPI to będzie: CreateMutex, OpenMutex, ReleaseMutex, WaitForSingleObject, WaitForMultipleObjects

i udostępnia strumienie, łańcuchy znaków

Nie łańcuchy znaków, tylko klasę do obsługi łańcuchów znaków.

są tam wektory listy, algorytmy sortowania zliczania…itp.

Po co to powtarzasz? Wcześniej napisałeś kontenery i algorytmy. W zasadzie mógłbyś wymienić wszystkie kontenery, bo dużo ich nie ma.

9. Czy się różni mapa od wektora?

Sposób dostępu: np. dostęp do piątego elementu za pomocą tych nawiasów[]

Sposobem przechowywania danych: elementy są posortowane według klucza. Mapa to posortowany kontener asocjacyjny. wektor to obiektowa wersja tablicy.

10. Czy się różni proces od wątku?

Każdy proces ma własną, niezależną przestrzeń adresową, w przeciwieństwie do wątków, które korzystają z przestrzeni adresowej procesu-właściciela, a co za tym idzie nie mogą istnieć poza procesem, który je stworzył.

11. Czym się różni wskaźnik od referencji?

W przeciwieństwie do wskaźnika referencja nie może być niezainicjalizowana. Jej inicjalizacja następuje tylko raz, podczas definicji zmiennej referencyjnej (zwanej aliasem), i nie podlega zmianie.

15. Co to jest sekcja krytyczne?

Fragment kodu który może być wykonywany

Jeden z mechanizmów lokalnej synchronizacji wątków.



To tak na szybko. Nie chciało mi się wszystkiego dokładnie sprawdzać. Aha, i nie traktuj tego jako gotowe odpowiedzi, jedynie jako drobne uwagi.

Może później jeszcze zajrzę...
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: teoria

Nowy postprzez banita » sobota, 28 listopada 2009, 17:39

sekcja krytyczna tak naprawde nie jest mechanizmem do synchronizacji watkow. jest to mechanizm pozwalajacy wykonac szereg instrukji jak jedna instrukcje atomowa. to ze na bazie sekcji krytycznej jak i sama sekcja jest wykozystywana jako mechanizmy synchronizacji to juz inna historia.

pytanie 37.
dziedziczenie prywatne i publiczne to tematy ktore poczatkujacym sprawiaja ogromne trudnosci dlatego napisze o tym kilka zdan.

dziedziczenie publiczne:
modeluje relacje "JEST" czyli klasa pochodna jest klasa bazowa ale nie odwrotnie. auto jest pojazdem ale pojazd nie konicznie jest autem. jezeli nie zachodzi relacja "JEST" to nie ma dziedziczenia publicznego!!! bardzo czesty blad w modelowaniu hierarhi klas!!! dziedziczenie publiczne udostepnia nam zjawisko polimorfizmu (to co kochamy najbardziej:P).

dziedziczenie prywatne:
jest to technika implementacji z wykorzystaniem. co to oznacza? nie zachodzi relacja "JEST"!!! poprostu implementujemy nasza klase wykorzystujac jaka klase juz istniejaca.
w 99,9% przypadkow implementacje z wykorzystaniem wykonuje sie poprzez normalne zawieranie obiektu klasy(jako wlasciwosc) w naszej klasie. po co wiec dziedziczenie prywatne? prywatnie dziedziczmy tylko i wylacznie wtedy gdy chcemy implementowac klase z wykorzystaniem innej klasy ale MUSIMY MIEC DOSTEP DO POL PROTECTED TEJ KLASY!!! tylko i wylacznie wtedy!!! w inym przypadku stosujemy technike zawierania.
w dziedziczeniu prywatnym nie zachodzi zjawisko polimorfizmu ani nic z tych rzeczy. jest to dokladnie to samo to zawarcie klasy bazowej jako pola w naszej klasie tyle ze mamy dostep do pol protected.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: teoria

Nowy postprzez polymorphism » sobota, 28 listopada 2009, 18:01

sekcja krytyczna tak naprawde nie jest mechanizmem do synchronizacji watkow.

W sumie masz rację. Pisząc tamto miałem na myśli sekcję jako zestaw funkcji systemowego API - zmyliło mnie pierwsze pytanie.

@ttomekb: popraw odpowiedź 11, bo odpowiedź jest sformułowana tak, jakby odpowiadała na pytanie "czym różni się referencja od wskaźnika".
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: teoria

Nowy postprzez banita » sobota, 28 listopada 2009, 18:13

widze ze pojawiaja sie tez pytania na temat tego czym sa finckej virtualne czy czysto wirtualne.
ksiazki do nauki c++ strasznie kuleja w tym temacie (tak samo jak z wyjasnieniem dziedziczenia public i private) dlatego tutaj tez napisze dwa zdania.

mamy mozliwosc zawarcia w naszej klasie funkcji czyto wirtualnej wirtualnej badz "normalnej". ok ale po co sa tez rozne rodzaje funkcji? kiedy ktore stosowac? ksiazki pisza jedynie tyle ze dzieki funkcji wirtualnej osiagamy zjawisko polimorfizmu. to prawda ale definiujac taka funkcje nalezy miec cos innego na wzgledzie.
a wiec tak:

piszemy klase i to czy zawrzemy funkcje wirtualne czy czystko wirtualne rzutuje na dalsza hierarhie dziedziczenia po tej klasie. tzn decydujac sie na owe funkcje musimy okreslic jak powinna wygladac dalsza hierarhia.

zawieracja funkcje czysto wirtualne wymuszamy na kolejny klasach aby ta funkcje implementowaly. mamy swiadomosc ze ta funkcja musi byc w kazdej klasie pochodnej i (najczesciej) powinna ona byc specyficzna dla tej klasy pochodnej.

gdy zawieramy funnkcje wirtualne to mowimy ze klasa pochodna moze implementoac ta funkcje ale nie musi bo moze skozystac z naszej.

natomiast gdy zawieramy zwykla funkcje to mowimy ze tej funkji nie wolno!!! implementowac. stosujemy to wtedy gdy uznajemy ze ta nasza implementacja jest poprawna dla dowolnej klasy ktora bedzie dziedziczyc po naszej klase.

te trzy przeznaczenia tych funkcji sa bardzo wazne ale niestety nie sa opisywane w ksiazka wiekszosci autorow.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: teoria

Nowy postprzez ttomekb » niedziela, 29 listopada 2009, 13:57

trochę dopisałem i pozmieniałem... możecie zerknąć?? zwróćcie uwagę na 13 bo chyba jest źle...
Avatar użytkownika
ttomekb
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): piątek, 27 listopada 2009, 18:30
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: vista niestety
Kompilator: C++ Builder
    NieznanyNieznana

Re: teoria

Nowy postprzez Witold » poniedziałek, 30 listopada 2009, 17:56

banita napisał(a):prywatnie dziedziczmy tylko i wylacznie wtedy gdy chcemy implementowac klase z wykorzystaniem innej klasy ale MUSIMY MIEC DOSTEP DO POL PROTECTED TEJ KLASY!!! tylko i wylacznie wtedy!!!


Scott Meyers - Effective C++:
Item 39: Use private inheritance judiciously:

Things to Remember

Private inheritance means is-implemented-in-terms of. It's usually inferior to composition, but it makes sense when a derived class needs access to protected base class members or needs to redefine inherited virtual functions.

Unlike composition, private inheritance can enable the empty base optimization. This can be important for library developers who strive to minimize object sizes.


Pan Meyers nie napisał "tylko i wylacznie wtedy!!!", więc może są też inne sytuacje gdy to ma sens.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana


Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości