Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- • Dlaczego funkcja inline powinna być umieszczona na górze pliku?
- Funkcje typu inline muszą być na samej górze tekstu programu albo w plikach *.h(dołączane są w czasie
- kompilacji modułow programu) ponieważ ciała tych funkcji muszą być znane kompilatorowi w danym zakresie
- ważności
- Grębosz str 138; 5.9
- • W jakie operatory służą do dynamicznej alokacji pamięci w C++?
- Operator new - dla obiektów
- Operator new[] dla tablic
- • Dlaczego przy programowaniu obiektowym nie można korzystać z funkcji malloc?
- Operator new automatycznie wywołuje konstrutkor. Przy zastosowaniu malloc - tej akcji wywołania
- kosntruktora nie będzie. Podobnie z delete - wywoła się dtor - przy free dtor nie zostanie uruchomiony
- I malloc zwraca wskaźnik do void a new wskaźnik do typu który własnie stawrza.
- Grębosz str 274; 8.11.8
- • W jaki sposób należy zainicjalizować zmienną statyczną będącą składnikiem klasy? Podaj przykład.
- // Klasa.cpp
- class Klasa
- {
- static int x;
- };
- //Klasa.h
- int Klasa::x = 0;
- • Co to są funkcje statyczne będące składowymi klasy?
- Zdeklarowanie funkcji składowej jako statycznej sprawia, że nie zawiera ona wskaźnika this.
- Nie dotyczy ona wówczas konkrentego obiektu, tylko klasy obiektów
- Grębosz str 415-17
- • W jaki sposób można zaimplementować przeładowany operator post- i pre- inkrementacji?
- T T::operator--(analogicznie jak niżej)
- T T::operator++(int)
- {
- int o_ile = 2;
- T kopia(*this);
- x = kopia.x + o_ile;
- return kopia;
- }
- Grębosz str 774-777
- • Czy są jakieś ograniczenia na argumenty przeładowanego operatora?
- Tak.
- • Czy możemy przeładować wszystkie operatory?
- Nie, a dokładniej operatrów: . .* :: ?: # ## i rodzine *_cast`ów
- Grębosz str 710
- • Na czym polega przeładowanie operatorów?
- • Co to jest destruktor?
- Dtor klasy K to funkcja składowa o nazwie ~K.
- Dtor to "sprzątaczka". Sprząta obiekt automatycznie po wyjściu z zakresu ważności.
- Grębosz str 402 i 605
- • Klasa B dziedziczy w sposób prywatny po klasie A. Czy możliwe jest zachowanie oryginalnego sposobu dostępu do składników klasy A.
- W jaki sposób można go zrealizować?
- • Jeżeli w klasie D odwołamy się do zmiennej x, która zmienna zostanie wybrana (z klasy A czy C)? Dlaczego?
- Z klasy C
- Jeżeli składowa o tej samej nazwie dziedziczona jest raz bezpośrednio z klasy bazowej,
- a drugi raz jest ona dalszym potomkiem, to nie ma wieloznaczności, bo zawsze zostanie wybrana składowa bliższa.
- • Czy można łączyć dziedziczenie wirtualne z dziedziczeniem normalnym?
- Tak
- • Jak wywoływane są konstruktory w przypadku dziedziczenia wirtualnego?
- Klasy dziedziczone wirtualnie konstruowane są na samym początku, przed innymi klasami bazowymi.
- Dla większej liczby klas dziedziczonych wirtualnie kolejność wywoływania konstruktora odpowiada kolejności na liście pochodzenia.
- • Jakich operacji nie można wykonywać na klasie abstrakcyjnej?
- Tworzyć obiektów tej klasy
- Definiować funkcji przyjmujących jako parametr obiekt tej klasy
- Zwracać obiektów tej klasy jako wyniku działania funkcji
- Używać tego typu przy jawnej konwersji
- Po co definiuje się destruktor wirtualny?
- Po to żeby móc po nim dziedziczyć - tj żeby wszystkie dtory od najnizej klasy w hierachi w góre zostały wywołane
- // Dawid
- Czym jest hermetyzacja ?
- Hermetyzacja (inna używana nazwa to enkapsulacja) – Hermetyzacja polega na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak,
- aby były one dostępne tylko metodom wewnętrznym danej klasy lub funkcjom zaprzyjaźnionym.
- Co to jest polimorfizm i kiedy ma miejsce ?
- Private, public, proctected czym są oraz jakie są różnica pomiędzy nimi ?
- Operator widoczności przy klasie, z której dziedziczymy pozwala ograniczyć widoczność elementów publicznych z klasy bazowej.
- public - oznacza, że dziedziczone elementy (np. zmienne lub funkcje) mają taką widoczność jak w klasie bazowej.
- protected - oznacza, że elementy publiczne zmieniają się w chronione.
- private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.
- brak operatora - oznacza, że niejawnie (domyślnie) zostanie wybrany operator private
- Co to są szablony klas, funkcji i funkcje wyspecalizowane ?
- W jaki sposób można zaimplementować operator= ?
- Klasa& operator=(const Klasa& orginalny_obiekt)
- {
- atrubut = orginalny_obiekt.atrybut;
- return *this;
- }
- W jaki sposób można zaimplementować operator>= ?
- bool operator>=(const Klasa& org)
- {
- if(atrybut >= org.atrybut)
- return true;
- return false;
- }
- Czym jest friend i jakie ma cechy, na co pozwala ?
- Zaprzyjaźnianie (friend). Funkcję F() deklarujemy jako zaprzyjaźnioną z klasą X, jeśli chcemy, aby F() miała dostęp do prywatnych lub chronionych
- danych składowych klasy X.
- W jaki spsób można zaimplentować operator<< ?
- friend ostream& operator<<(ostream &wyjscie, const Klasa& org)
- {
- return wyjscie << org.atrybut << "---" << org.atrybut2 << endl;
- }
- Pokaz na przykladzie jak zainicalizować obiekt jawnie i niejawnie ?
- Klasa a(); niejawnie
- Klasa a = Klasa(); jawnie
- Co to jest konstruktor kopiujący ?
- Co to jest this oraz operator -> ?
- Co to jest referencja ? ( z dedykacją dla Leszka ;-) )
- http://pl.wikibooks.org/wiki/C%2B%2B/Referencje#Czym_jest_referencja.3F
- Czy w C++ można dziedziczyć po kilku klasach ?
- Tak
- Czy funkcja virtual może być zarazem funkcją statyczną lub zaprzyjaźnioną ?
- Funkcja wirtualna nie może być funkcją statyczną.
- Funkcja wirtualna może być zaprzyjaźniona z inną klasą.
- Co to jest klasa abstrakcyjna - pokaż na przykładzie ?
- Klasa abstrakcyjna to taka, która posiada co najmniej jedną funkcje czysto wirtualną
- class A
- {
- public:
- A();
- virtual ~A();
- virtual void Pokaz() = 0;
- }
- Funkcja czysto wirtualna. Co to takiego ?
- np: virtual void Pokaz() = 0;
- Funkcja czysto wirtualna oznacza, że nie ma się ona nigdy wykonywać.
- Istnienie funkcji czysto wirtualnej powoduje, że klasa nie może definiować swoich obiektów.
- [... Dziedziczenie wielobazowe - dokladnie przezczytać, głowne problemy]
- */
- class A
- {
- private:
- int x;
- public:
- int getX()
- {
- return x;
- }
- };
- class B : private A
- {
- };
- class C : A
- {
- };
- class D : C, B
- {
- };
- int main(void)
- {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement