2006

Zapisz deklarację pola int x w klasie K tak, aby nie było wspólne dla obiektów tej klasy (!). [0-2]

I-26

__________________________________________________ ____________

class K {

CZ13K2

Imię i Nazwisko

Nr albumu

/[52]

public:

Przedstaw kod funkcji double f() rozwiązującej zadanie: „Cegła waży kilo i pół cegły. Ile waży cegła?” [0-4]

………………………………………………………………

};

Pewną klasę zdefiniowano następująco: class A { public: A() { cout<<”A”; } ~A() { cout << "~A”; } }; i wykonano poniższy fragment kodu. Jakie wyniki zostaną wyświetlone? [0-4]

Utwórz klasę pochodną klasy class X {} i nazwij ją Y. [0-2]

{ A o1; }

A * o2 = new A();

Odp.: _____________________________________________________

delete o2;

Dana jest klasa: class X {public: void m(); } Podaj przykład przesłonięcia i przeciążenia metody m() w pochodnej klasie o nazwie Y. [0-4]

Dane są klasy: class A { public: void m(); }; oraz class B : public A { public: virtual void m(); }; Utworzono Przesłonięcie

Przeciążenie (przeładowanie)

obiekt A *o = new B(); Czy wywołanie o->m(); wywoła metodę z klasy A czy z klasy B? [0-2]

Odp.: ________________

Pewną klasę zdefiniowano następująco: class A { public: int x; }; i wykonano poniższy fragment kodu.

W pewnej klasie K umieszono pole int x w sekcji ‘private:’. Pole to: [0-2]

Jakie wyniki zostaną wyświetlone? [0-2]

a) jest widoczne tylko w obrębie klasy K

A o1, o2;

b) jest widoczne tylko w obrębie klasy K oraz klas pochodnych o1.x = 1; o2.x = 2;

c) jest widoczne tylko w obrębie klasy K i klas zaprzyjaźnionych cout << o1.x << o2.x;

Uzupełnij poniższy kod tak, aby klasa Test była abstrakcyjna (uwaga!) [0-2]

Polimorfizm to pojęcie oznaczające: [0-2]

class Test {

a) wykonanie metod z klasy ustalonej na podstawie wykonanego konstruktora b) wykonanie metod obiektu z klasy zgodnej z typem wskaźnika na obiekt

};

c) nazwę greckiej tragedii

Jest dana pewna klasa K zawierająca pole int x. Uzupełnij lub popraw kod w taki sposób, aby było poprawnie inicjalizowane pole x: [0-2]

Dana jest definicja klasy A. Które z ciał metod m() i ms() są właściwe (T) (sensowne, dozwolone, nie K( int x ) { x = x; }

spowodują błędów w kompilacji kodu), a które nieprawidłowe (N)? [0-6]

template <class Typ>

Które przypadki kodu zadziałają prawidłowo (naprawdę zwrócą a) m() { ms(); s = 7; } T / N

class A {

Typ max(Typ a, Typ b)

wartość minimalną)? [0-2]

b) m() { p = 9; } T / N

public:

{

a) max(‘x’, ‘X’);

c) m() { p = 7; ms(); } T / N

static void ms() { … }

return a < b ? a : b

b) max("abc", "ABC");

d) ms() { m(); s = 7; } T / N

void m() { …}

;

c) max(0x378, 0x37A);

e) ms() { s = 7; } T / N

static int s;

}

d) max(-1, 0)

f) ms() { p = 9; m(); } T / N

int p; };

Ile konstruktorów może zawierać klasa w języku C++? [0-2]

Wyjątek to: [0-2]

a) dowolną liczbę b) tyle, ile destruktorów c) jeden d) żadnego a) inne zachowanie programu niż to przewidział programista, b)

class A {

class B : public A {

void main() {

przekazanie sterowania do innego miejsca kodu niż to wynika z typowego wykonania programu, c)

public:

public:

A* o = new B();

sytuacja w programie, która wymaga podjęcia szczególnych kroków.

Jak zadziała poniższy kod? Co wyświetli? [0-2]

A() { cout << "A "; }

B() { cout << "B "; }

o->m();

int f(int x) { if(x>0) return x; else throw "Wyjątek"; }

~B() { cout << "~B "; }

delete o;

void main() {

};

void m() { cout << "mB "; }

}

try { cout << f(0); cout << f(1); }

};

catch (int w) { cout << "W1"; }

Wpisz wyniki dla różnych wariantów (virtual/brak virtual). [0-8] przykład: A B mA mB ~B ~A catch (char * w) { cout << "W2"; }

~A() {…}

virtual ~A() {…}

~A() {…}

virtual ~A() {…}

} }

Zaznacz cechy charakterystyczne dla strukturalnego stylu programowania: [0-2]

void m() {…}

void m() {…}

virtual void m() {…}

virtual void m() {…}

a)

używanie wcięć i formatowania tekstu dla zwiększenia czytelności kodu źródłowego, b)

podział programu na mniejsze, niezależne od fragmenty ze zdefiniowanym interfejsem, c) stosowanie wyłącznie struktur danych struct {} zamiast typów prostych.